Jon*_*Cox 34 xcode ios autolayout ios6 xcode4.5
我需要设置translatesAutoresizingMaskIntoConstraints
为NO
.默认情况下,它设置为YES
(以协助大多数从struts和spring转换到新的Auto Layout的应用程序).
Xcode中有哪些地方可以将默认值更改YES
为NO
?
或者我是否必须为每个视图手动设置它?
Coc*_*Bob 20
我迟到了这个问题,但Xcode 5和6中仍然没有提到上述选项,所以这个问题仍然有意义.
实际上,我们总是可以通过在Storyboard(Interface Builder)中添加用户定义的运行时属性来为视图/控件/对象的任何属性设置一个值,如下面的屏幕截图所示.
它也适用于translatesAutoresizingMaskIntoConstraints.所以这个问题可以解决.
red*_*ulb 16
这是一个很好的问题 - 我试图找到一个自己的答案.可悲的是,它似乎没有"快速修复".目前,Apple考虑基于Constraint的布局选择 - 甚至命名UIView
类参考的一部分:
选择基于约束的布局
但是,选择加入不是全球性的.我认为这是因为如果你只是将Springs&Struts变成约束,那么一切看起来都不错.一些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];
Run Code Online (Sandbox Code Playgroud)
这样你的子视图就不会受到约束,因为它是 Xcode 4.3 及更高版本中的默认值(自动布局)。谢谢
根据文档,NO
如果通过 Interface Builder 添加视图,则此属性会自动设置为。