视图布局未完全处于主视图区域的问题及适配方法咨询
布局问题解答
问题截图

问题说明
选中view时,发现该视图的布局未完全处于主视图区域范围内,请问这是如何产生的?该如何让视图完全适配主视图区域?
左侧面板的结构如下:
Controller Scene Controller View Safe Area Table View Item Cell Container View Constraints First responder Exit
产生原因
- 核心原因是这个
view和父视图(控制器根视图)之间缺少正确的约束配置:要么没加四边贴合的约束,要么约束关联的对象不对(比如只加了左右没加上下,或者关联到了非父视图的元素)。 - 也有可能是代码里手动修改过这个
view的frame或bounds,强制改变了它的位置和大小,导致超出主视图范围。 - 要是拖拽添加视图时没自动生成约束,Xcode会给个默认frame,换个屏幕尺寸就容易出现偏移或超出的情况。
修复方法
- 添加贴合约束:选中这个
view,按住Ctrl键拖到它的父视图(Controller下的View),弹出菜单里选「Leading to Safe Area Leading」「Trailing to Safe Area Trailing」「Top to Safe Area Top」「Bottom to Safe Area Bottom」,这样就能让它完全贴合Safe Area范围。如果不需要留Safe Area(要铺满整个屏幕),就直接关联到父视图的四个边缘,别选Safe Area。 - 检查代码修改:打开控制器的代码文件,搜有没有
view.frame =或者view.bounds =这类手动设置布局的代码,删掉这些,改用约束来控制布局。 - 重置约束:如果约束乱得没法理,选中这个
view右键点「Reset to Suggested Constraints」,让Xcode自动生成合适的约束。
内容的提问来源于stack exchange,提问作者zs2020
相关产品推荐
相关产品推荐

