我查看了http://developer.apple.com/library/ios/#recipes/xcode_help-interface_builder/articles/UnderstandingAutolayout.html但解释很模糊。
我在 iOS 6 上。我有一个带有两个 subview 的 View Controller ,一个在另一个之上:
我想使用自动布局来设置 View ,如果我以编程方式更改顶 View 的框架,底 View 将调整大小以适应顶 View 的新框架。也就是说,如果我增加顶 View 的高度,底 View 的高度应该降低以保持两个 View 之间的相同间隔;如果我降低顶 View 的高度,则会发生相反的情况。
我在 Xcode 中为这两个 View 获得的默认约束是:
如果我按住 Command 并调整顶部( map ) View 的大小,底部(表格 View )似乎会正确地垂直收缩或扩展以遵守它们之间的空间限制。
但是,当我尝试通过代码修改顶 View 的框架或边界时,例如:
self.topView.frame = CGRectMake(0, 0, 320, 514);
底 View 不缩小。
那么我错过了什么?
最佳答案
不能修改self.topView.frame
像那样。设置框架是自动布局的工作。您需要修改约束,然后让自动布局更新框架。
创建类型为 NSLayoutConstraint
的 socket 在您的 View Controller 中:
@property (nonatomic, strong) IBOutlet NSLayoutConstraint *topViewHeightConstraint;
将 socket 连接到 Storyboard顶 View 上的 height=127 约束。 See this answer如果您需要更多帮助将 socket 连接到约束。
然后,要更改顶 View 的高度,并让自动布局也更新底 View 的框架,请设置约束的常量:
self.topViewHeightConstraint.constant = 514;
在运行循环结束时(不是马上,而是在屏幕更新之前),自动布局将修改两个 View 的框架以满足更改后的约束。
关于ios - 如何让自动布局在 Xcode 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17980489/