我需要设置translatesAutoresizingMaskIntoConstraints
为NO
. 默认情况下,它设置为YES
(以帮助大多数应用程序从 struts 和 springs 过渡到新的自动布局)。
Xcode中是否有可以将默认值从更改YES
为的地方NO
?
还是我必须为每个视图手动设置它?
我需要设置translatesAutoresizingMaskIntoConstraints
为NO
. 默认情况下,它设置为YES
(以帮助大多数应用程序从 struts 和 springs 过渡到新的自动布局)。
Xcode中是否有可以将默认值从更改YES
为的地方NO
?
还是我必须为每个视图手动设置它?
我迟到了这个问题,但在 Xcode 5 和 6 中仍然缺少提到的选项,所以这个问题仍然有意义。
实际上,我们总是可以通过在 Storyboard (Interface Builder) 中添加用户定义的运行时属性来为视图/控件/对象的任何属性设置值,如下面的屏幕截图所示。
它也适用于translatesAutoresizingMaskIntoConstraints。所以这个问题可以解决。
这是一个很好的问题——我试图为自己找到一个答案。可悲的是,看起来没有“快速修复”。目前,Apple 考虑基于约束的布局选择加入 - 甚至命名UIView
Class Reference的一部分:
选择基于约束的布局
但这种选择加入并不是全球性的。我认为这是因为如果您只是将 Springs & Struts 转换为 Constraints,则并非一切看起来都很好。一些 UI 元素会损坏,或者您会收到大量无法满足的约束错误。
我可以想到一种可能的解决方案 - 我自己没有尝试过,但是您可以在其上创建一个类别UIView
,将所有 对象设置为UIView
返回. 虽然我不知道这会破坏什么,但它会全局设置为.NO
- (BOOL)translatesAutoresizingMaskIntoConstraints
translatesAutoresizingMaskIntoConstraints
NO
如果您想了解更多关于类别的信息,这里有一个很好的分类介绍!
当您必须更改子视图的大小或位置时。(BOOL)translatesAutoresizingMaskIntoConstraints
在设置子视图的框架之前使用方法。
[self.benchmarkButton removeFromSuperview];
[self.benchmarkButton setTranslatesAutoresizingMaskIntoConstraints:YES];
[self.benchmarkButton setFrame:CGRectMake(20, self.benchmarkButton.frame.origin.y+40, 260, 30)];
[self.benchmarksView addSubview:self.benchmarkButton];
这样你的子视图就不会受到约束,因为它在 Xcode 4.3 及更高版本中是默认的(自动布局)。谢谢
根据文档,NO
如果视图是通过 Interface Builder 添加的,则此属性会自动设置为。