【发布时间】:2015-09-30 03:36:45
【问题描述】:
在 iOS 8 中使用故事板和自动布局处理项目:
- 在情节提要中,为此视图及其子视图指定了约束
- 在代码中,为了响应触摸事件,我将通过设置它的框架来改变这个视图的大小
为了使 1 和 2 都没有警告,我在第一次使用代码更改其大小时执行以下操作:
[theView removeConstraints:theView.constraints];
theView.translatesAutoresizingMaskIntoConstraints = YES;
theView.frame = CGRectMake(0,0,width,height);
如果不做第一行,Xcode 会抱怨一大堆关于约束冲突的问题,但是添加这一行也会删除其所有子视图的约束。所以我的问题是:有没有办法只删除这个 uiview 的约束而不是它的子视图,比如它上的一个按钮仍然想相对于这个视图的大小和位置居中?
【问题讨论】:
-
为什么需要通过设置frame来改变view的大小?我认为避免您所描述的问题的“正确”方法是为 theView 的大小约束添加 IBOutlets,因为它们在情节提要中设置,然后在代码中修改这些约束。
-
我正在这样做,它在运行代码时会删除警告,但是现在在情节提要中,显示布局指南(虚线)警告,如果“更新框架”,它的子视图将超出地方。可能我在这方面太强迫症了:)
标签: ios objective-c xcode autolayout constraints