我在我的示例应用程序中使用AutoLayout。我有三个观点,topView,middleView,bottomView.Following是我需要的约束,
topView:
middleView:
bottomView:
我希望基于设备屏幕大小,底部视图y原点应该改变,这样中视图和顶部视图大小将调整。这里的问题是找不到答案,底层视图和接口的起源应该是什么,提供了永久的约束,例如:
这是因为没有办法找出视图的高度。唯一的困难是确定上视图和中视图的高度。

发布于 2013-07-18 14:01:32
你似乎不在乎顶部和中间的高度是多少,所以我要为你做一个决定:它们的高度是一样的。在这三个视图(_topView、_middleView和_bottomView)都是子视图的普通超级视图中添加以下约束:
NSString *vfl = @"V:|-(10)-[topView]-(10)-[middleView]-(10)-[bottomView(==30)]-(10)-|";
NSDictionary *dict = @{@"topView":_topView,@"middleView":_middleView,@"bottomView":_bottomView};
NSArray *a = [NSLayoutConstraints
constraintsWithVisualFormat: vfl
options: 0
metrics: nil
views: dict];确保您也水平地对齐了它们:
NSArray *b = [NSLayoutConstraints
constraintsWithVisualFormat: @"H:|-(10)-[topView]-(10)-|"
options: 0
metrics: nil
views: dict];
NSArray *c = [NSLayoutConstraints
constraintsWithVisualFormat: @"H:|-(10)-[middleView]-(10)-|"
options: 0
metrics: nil
views: dict];
NSArray *d = [NSLayoutConstraints
constraintsWithVisualFormat: @"H:|-(10)-[bottomView]-(10)-|"
options: 0
metrics: nil
views: dict];编辑
正如您所说,中间视图将是一个标签。标签具有固有的内容大小。如果你不设置这个视图的高度,自动收费系统就会本能地知道该做什么。(整洁,对吧?)通过将_topView的顶部固定到superview的顶部,将其底部固定到标签的顶部,应该自动计算其高度。我已经修改了代码以反映这一点。
编辑2
为了在代码中添加约束,找到这三个视图的一个共同祖先(superview),并编写[superview addConstraints:a],[superview addConstraints:b], etc...,确保在IB中关闭了autolayout,并将translateResizingMasksToConstraints设置为NO。
https://stackoverflow.com/questions/17717768
复制相似问题