如何开启/关闭自动布局在故事板
我想开启/关闭自动布局在故事板的单一视图控制器(称为场景我相信)如何开启/关闭自动布局在故事板
当我去一个特定的单一视图控制器在故事板中的场景,并在检查器中更改Use Auto Layout
复选框,我会为整个故事板场景启用/禁用自动布局。
我无法理解这种行为,因为对于其中一个复选框看起来像一个特定场景的属性,而不是整个故事板,第二我不明白为什么一个场景布局与其他场景有关。
这甚至可能吗?故事板或可能只在代码中有可能吗?
它看起来像这样“使用自动布局”复选框是针对特定场景的,但正如您发现的那样,它是针对整个“Interface Builder文档”(即整个故事板)的。因此,如果你不想在一个特定的场景中使用的自动布局,你被卡住了几个备选方案:
您可以把这个场景等以不同的故事板或NIB和过渡,并从视图控制器编程。如果你这样做,你就失去了很多故事板的好处(例如,你不能在IB中来回创建段落,而是必须以编程方式在这个场景之间进行转换)。
-
你可以继续启用自动布局启用,但随后有问题的一个视图控制器,你可以通过编程方式:
删除IB可能增加(尤其在Xcode 6)任何约束;
调整您的各种控件的
autoresizingMask
。如果您希望获得autoresizingMask
的荣誉,您可能需要打开translatesAutoresizingMaskIntoConstraints
;和如果使用Xcode 6,您可能还需要关闭“使用大小类”,以便为目标设备正确布置场景。
因此,已经奠定了我的标签,我在IB想要的方式,然后我可以:
- (void)viewDidLoad { [super viewDidLoad]; [self.view removeConstraints:self.view.constraints]; [self.label removeConstraints:self.label.constraints]; self.label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin; self.label.translatesAutoresizingMaskIntoConstraints = YES; }
显然,你设定的
autoresizingMask
到完全取决于你(在这个例子中,我在场景中放置了一个标签,所以当我走到风景时,上面的标签保持居中),但是希望这可以说明这个想法。
坦率地说,因为没有什么可以与自动调整大小面具,你不能在自动布局轻松地表达做,我倾向于坚持使用自动布局,可以消除上述方法的尴尬。
很好解释,谢谢 – Mario 2014-08-31 15:43:51
您可以将单个视图控制器的布局移动到单独的xib文件并以编程方式加载它。如果你不想定义自己的约束条件,你可以将你的控制器放在故事板中,而不是为它添加约束条件。在这种情况下,基于VC的子视图的框架,将在运行时为您自动生成约束。
我建议坚持自动布局。如果传言4.7英寸的iPhone 6是真的,你会受益。在布局问题证明您头痛之前,彻底学习自动布局。 – 2014-08-31 13:32:28