在Xcode 4.5中,在哪里设置转换自动化仓库框架的限制

我需要将translatesAutoresizingMaskIntoConstraints设置为NO 。 默认情况下,它被设置为YES (帮助大多数从struts和spring转换到新Auto Layout的应用程序)。

Xcode中有什么地方默认可以从YES更改为NO

或者我必须为每个视图手动设置它?

这是一个很好的问题 – 我试图find自己的答案。 可悲的是,看起来没有“快速修复”。 目前,苹果考虑基于约束的布局select – 甚至命名的UIView类参考的一部分 :

select基于约束的布局

但是,这个select不是全球性的。 我认为这是因为如果你只是把Springs&Struts变成约束,不是所有的东西都看起来不错。 一些用户界面元素破坏,或者你会得到大量的不可满足的约束错误。

我可以想到一个可能的解决scheme – 我没有自己尝试过,但是你可以在UIView上设置一个类别来设置所有 UIView对象返回NO- (BOOL)translatesAutoresizingMaskIntoConstraints 。 虽然我不知道这会破坏什么,但是它会在全局范围内将“自动修复大括号限制” translatesAutoresizingMaskIntoConstraints为“ NO

如果你想了解更多关于它们的信息,请点击这里 。

我迟到了这个问题,但是在Xcode 5和6中仍然没有提到这个选项,所以这个问题还是有意义的。

实际上,通过在Storyboard(Interface Builder)中添加用户定义的运行时属性 (如以下屏幕截图),我们始终可以为视图/控件/对象的任何属性设置值。

它也适用于translatesAutoresizingMaskIntoConstraints 。 所以这个问题可以解决。

在这里输入图像说明

当你必须改变你的子视图的大小或位置。 在设置子视图的框架之前,使用(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及更高版本中的默认(AutoLayout)。 谢谢

根据文档,如果视图是通过Interface Builder添加的,则该属性会自动设置为NO

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instp/UIView/translatesAutoresizingMaskIntoConstraints