凡设置translatesAutoresizingMaskIntoConstraints在Xcode

2019-08-05 23:46发布

我需要设置translatesAutoresizingMaskIntoConstraintsNO 。 默认情况下,它被设置为YES (以协助广大即将转移从支柱和弹簧新的自动布局应用程序)。

有没有什么地方在Xcode其中默认可以从改变YESNO

还是我必须手动设置它为每一个看法?

Answer 1:

这是一个很大的问题 - 和一个我一直试图找到一个答案自己。 可悲的是,它看起来像没有“速战速决”。 目前,苹果认为,基于约束的布局选择加入-即使命名的部分UIView类参考 :

选择加入到基于约束布局

但是,选择加入是不是全球性的。 我相信这是因为不是一切看起来都好,如果你只是把弹簧与Struts的进入限制。 一些UI元素打破,或者你会得到一吨的不可满足的约束错误。

我能想到的一个可能的解决方案-我还没有尝试过自己,但你可以做一个分类UIView设置所有 UIView对象返回NO- (BOOL)translatesAutoresizingMaskIntoConstraints 。 虽然我不知道这是什么会打破,将全局设置translatesAutoresizingMaskIntoConstraintsNO

这里是一个很好的介绍,分类,如果你想了解更多关于他们 !



Answer 2:

我迟到了这个问题,但提到的选项在Xcode 5和6人仍下落不明,所以问题仍然是有意义的。

实际上,我们通常可以通过添加象下面的截图定义运行时属性约在故事板(界面生成器)的用户设定的值的视图/控制/对象的任何属性。

而且它也适用于translatesAutoresizingMaskIntoConstraints。 所以,问题就可以解决。



Answer 3:

当u必须改变你的子视图的大小或位置。 使用(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和更高版本的子视图不会从约束战斗。 谢谢



Answer 4:

根据文档,该属性被自动设置为NO如果视图是通过界面生成器添加。

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



文章来源: Where to set translatesAutoresizingMaskIntoConstraints in Xcode 4.5