dji*_*i33 2 objective-c interface-builder ios autolayout
我想要的东西看起来很简单,但是我无法弄清楚我的期望.考虑到不同的屏幕尺寸,我正在使用AutoLayout来避免硬编码帧.为所有.xibs打开了AutoLayout,但我没有在Interface Builder中创建任何显式约束.
ViewControllerA嵌入了ViewControllerB并将VCB的视图添加到它的视图层次结构中.VCA有一个TableView,VCB有一个UserView(只是带有子视图的普通视图).
我希望TableView位于UserView的顶部.UserView具有固定的高度,它的底部将始终固定在屏幕的底部.TableView将填充屏幕的其余部分.
这是我在代码中所拥有的.这将UserView成功粘贴到底部:
userViewController.view.translatesAutoresizingMaskIntoConstraints = false;
NSDictionary *constrainedViews = @{ @"userView" : userViewController.view, @"menu" : self.menuTable };
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[userView]|"
options:0
metrics:nil
views:constrainedViews]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[userView(174)]|"
options:0
metrics:nil
views:constrainedViews]];
Run Code Online (Sandbox Code Playgroud)
1)如果我translatesAutoresizingMaskIntoConstraints在添加约束之前没有调用,我会得到"无法同时满足约束".在我的控制台抱怨有冲突的NSAutoresizingMaskLayoutConstraints.为什么?我打开了AutoLayout.我认为只有在组合AutoLayout和非AutoLayout视图时才会出现此错误.是因为我在IB中没有明确的约束吗?
所以我根据需要将UserView对齐到底部,现在我想要将TableView堆栈放在最上面并填充剩余的screen.If我用上面的替换上面的最后一个约束(Vertical约束):
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[menu][userView(174)]|"
options:0
metrics:nil
views:constrainedViews]];
Run Code Online (Sandbox Code Playgroud)
我再次在控制台中收到一堆错误.
(
"<NSLayoutConstraint:0xd39c880 'IB auto generated at build time for view with fixed frame' V:|-(0)-[UITableView:0xe914e00] (Names: '|':UIView:0xd39ea60 )>",
"<NSLayoutConstraint:0xd39c590 'IB auto generated at build time for view with fixed frame' V:[UITableView:0xe914e00(362)]>",
"<NSLayoutConstraint:0xd3a4f60 V:[UITableView:0xe914e00]-(0)-[UIView:0xd39ff60]>",
"<NSLayoutConstraint:0xd3a4350 V:[UIView:0xd39ff60]-(0)-| (Names: '|':UIView:0xd39ea60 )>",
"<NSAutoresizingMaskLayoutConstraint:0xd3af6d0 h=-&- v=-&- UIView:0xd39ff60.midY == UIView:0xd39ea60.midY>"
)
Run Code Online (Sandbox Code Playgroud)
我已经被困了几个小时,并且不知道如何继续.我有什么想法我做错了吗?为什么IB自动生成一个固定的帧,而我无法用我的新约束覆盖它?
看起来破坏的约束在你的superview或包含UITableView的视图上,而不是在UITableView本身上.如果您计划在代码中设置这些约束,则应首先删除所有这些自动约束:
[self.view removeConstraints:self.view.constraints];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2545 次 |
| 最近记录: |