如何创建基于约束的视图,在iPhone 5和iPhone 4之间调整大小,与Anchor操作相比?

War*_* P 22 xcode interface-builder nslayoutconstraint

经典的Springs和Struts,又名"Anchor and Align",或"Autosizing mask",是我理解的唯一一种调整大小管理.然而,在XCode 4.6中,使用iOS 6中引入的约束的"autolayout"是默认的,它使某些简单的事情变得更难,同时一旦你学会如何,就可以使整个世界的新安排成为可能. (要清楚的是,一些用户可能只关心在没有对抗自动布局战斗的情况下使用简单的视图,因此Matt早期提出了关闭Autolayout的解决方法,以下转载)

iOS 6 Layout Constraints,Interface Builder系统的编辑约束,我不明白.

在此输入图像描述

在XCode Interface Builder自动创建约束的地方(例如在视图的边缘),它似乎以我理解的方式运行.

我不明白为什么在这里显示的.xib,也可以在这里找到,为什么我不能让绿色和洋红色区域保持一个恒定的边界(它们之间的白色区域),它们不会变厚,也不会变薄,无论视图大小发生什么变化.

这意味着我需要绿色区域不要垂直调整大小并且只是水平调整大小,但是它坚持将自己锚定到窗体的底部,虽然从一个新的空白笔尖再次开始,将恢复界面构建器,因此它会注意到邻接再次看到绿色和洋红色的视图,一旦界面构建器变得"愚蠢",它坚持只根据它与父视图底边的距离来定义绿色视图的底边,并且不会(对于任何数量的摆弄)否则使用仅仅是拖放操作.我还尝试了Pin命令,但没有找到有效的pin命令.

与界面构建器菜单或拖放相比,没有多少打架似乎就足够了,让它放弃其中一个约束.我无法弄清楚我应该做什么.删除约束?怎么样?根据我可以看到,无论是从IB对象窗格还是从实用程序 - >大小检查器,都无法删除约束.有一个删除选项,但在单击约束区域中的"齿轮"图标按钮时出现的下拉菜单中显示为灰色.

理想情况下,如果绿色区域随着视野变宽而调整大小,我会喜欢它,但不是因为它变得更高或更短.我认为这在其他所有工具中都是显而易见的,但在XCode + Autolayout中,它要么根本没有调整大小,要么在所有四个方向上调整大小.我无法删除或删除正在做我不想做的事情的约束.您是否必须对另一个视图中的每个视图有四个约束?

(更新1:您无法删除任何会导致模糊或未指定布局的约束.)

(更新2:有时如果uiview窗格不会捕捉到兄弟,删除该uiview并再次尝试将允许它自然地"捕捉"到兄弟,并且约束将相对于兄弟视图对象而不是父母.)

(更新3:马特删除了他的解决方法,我在下面复制了.)

对于那些首先不想要Autolayout的人,以及那些只想要旧弹簧和支柱的人的解决方法:

第1步:关闭Autolayout:

在此输入图像描述

第2步:选择正确的自动化蒙版:

在此输入图像描述

jrt*_*ton 12

在界面构建器中编辑约束的关键是,一旦将其添加到视图中,就不会拖放任何内容.通过编辑约束来移动和排列事物.使用固定菜单创建新约束.添加足够的新约束后,可以删除不需要的约束,以明确替换自动添加的系统约束.

在您的情况下,我创建了以下约束:

在此输入图像描述

我将您的视图重命名为"Green"和"Magenta",以便在文档导航器中更清晰.我所做的是:

  • 固定视图之间的垂直间距
  • 将每个视图固定到左侧和右侧
  • 将顶视图固定到设置高度和距离超视图顶部的设定距离
  • 将底部视图的底部固定到superview的底部.

我认为这可以为您提供所需的布局.如果你想阅读更多内容,我在这里写下了令人难以忍受的细节.