ios – 使用自动布局调整Uiview的大小

现在我正在学习汽车布局,我遇到了一个我无法解决的问题.

我有一个在4英寸设备中正确加载的视图(左视图),我正在尝试将其调整为3.5英寸设备,以使其与图像上的右视图完全相同:

唯一的区别是绿色,橙色,黑色和粉红色的视图应缩小一点,以保持上述两个视图的相同大小.

我的问题是我无法找到使用约束的方法.

这就是我已经拥有的约束所发生的事情:

我已经尝试将底部空间固定为黑色和粉红色视图的超视图,以便视图缩小以适应屏幕,但是这不起作用并且在Xcode上给了我很多警告.

解决方法

您需要绿色和黑色视图之间以及橙色和粉红色视图之间的等高约束.

让我们从头开始构建您的布局.如果使视图小于您想要的值,通常更容易设置约束,并编辑约束常量以对其进行调整大小.所以我们从五个视图开始:

这里的视图布局很重要!请注意,例如,橙色视图严格位于绿色视图的右侧.这意味着如果我要求Xcode从绿色视图的后缘到其最近邻居创建约束,则该邻居是橙色视图,而不是超级视图.

在文档大纲中命名视图很有帮助.要命名一个,请在大纲中单击其条目,按Return键,然后键入名称

选择蓝色.在顶部,前导和后缘以及高度约束上为其赋予常量0的约束:

如果你更新它的框架(就像我在对话框中所做的那样),Xcode会像这样放置它:

接下来,选择绿色.在所有四条边上给它约束,常数为0.顶部应该去蓝色,领先应该去superview,尾随应该去橙色,底部应该去黑色.您可以通过单击显示三角形来检查约束另一端的视图:

不要更新Green的框架了!它应该如下所示:

接下来,为橙色,黑色和粉红色做同样的事情.

为所有四个底部视图创建边缘约束后,选择所有四个视图(绿色,黑色和粉红色).它应该如下所示:

选中所有四个,创建等宽和等高约束:

请注意,这是过度的.我们并不需要左右列之间的等高约束,并且我们不需要顶行和底行之间的等宽约束.但是这个答案已经有一英里长,并且在一个动作中创建所有相等大小的约束要短得多.

现在看起来应该更加混乱:

选择顶级视图或视图控制器,然后选择“在View Controller中更新所有帧”:

Xcode应该像这样布置视图:

如果单击形状因子切换按钮,Xcode应该像这样布局视图:

我已将最终的故事板上传this gist.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...