使用故事板和自动布局在iOS 8中处理项目:
要使1和2警告都免费,我首先使用代码更改其大小时执行以下操作:
[theView removeConstraints:theView.constraints];
theView.translatesAutoresizingMaskIntoConstraints = YES;
theView.frame = CGRectMake(0,0,width,height);
如果不做第一行,Xcode会抱怨一大堆约束冲突,但添加这一行也会删除所有子视图的约束。所以我的问题是:有没有办法去除这个uiview的约束而不是它的子视图,比如它上面的一个按钮仍然想要相对于这个视图的大小和位置居中?
答案 0 :(得分:1)
首先,您不需要通过设置框架来调整视图大小,否则将约束保留在第一位的重点是什么。你可以通过简单地拥有正确的初始框架来获得位置。
其次,你有一个关于" TO-WHOM"已应用约束。
说它上面的按钮仍然想要相对于这个视图的大小和位置居中?
将与位置相关的约束应用于视图时,通常会将其应用于superview
。表示如果您想将subview
放在view
的水平中心,则约束会添加到view
而不是subview
上。这就是为什么当您在视图上调用removeContraints:
消息时,位置约束已被删除,现在您的子视图未绑定到任何约束。但是,宽度和高度约束将应用于子视图本身。
要解决此问题,您需要为需要修改的约束设置IBOutlets
,在您的情况下应该是宽度,高度,水平x和顶部约束;然后分别更改它们的常量值。
theView.widthConstraint.constant = newValue;