首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用自动布局调整视图?

如何使用自动布局调整视图?
EN

Stack Overflow用户
提问于 2013-07-18 07:54:40
回答 1查看 137关注 0票数 0

我在我的示例应用程序中使用AutoLayout。我有三个观点,topView,middleView,bottomView.Following是我需要的约束,

topView:

  1. 总是从x起点10开始。
  2. 左、右边缘10。
  3. 高度应根据屏幕界限(或superview)而变化。

middleView:

  1. 顶部和中间视图之间应有10 px垂直边缘。
  2. 左、右边缘10。
  3. 高度应根据屏幕界限(或superview)而变化。

bottomView:

  1. 中、下视图之间应有10 px垂直边缘。
  2. 左、右边缘10。
  3. 高度应该是恒定的,比如说30。

我希望基于设备屏幕大小,底部视图y原点应该改变,这样中视图和顶部视图大小将调整。这里的问题是找不到答案,底层视图和接口的起源应该是什么,提供了永久的约束,例如:

  1. 中间视图的顶部空间到超级视图。
  2. 顶部空间到超级视图的底部视图。

这是因为没有办法找出视图的高度。唯一的困难是确定上视图和中视图的高度。

EN

回答 1

Stack Overflow用户

发布于 2013-07-18 14:01:32

你似乎不在乎顶部和中间的高度是多少,所以我要为你做一个决定:它们的高度是一样的。在这三个视图(_topView、_middleView和_bottomView)都是子视图的普通超级视图中添加以下约束:

代码语言:javascript
运行
复制
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];

确保您也水平地对齐了它们:

代码语言:javascript
运行
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17717768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档