【发布时间】:2015-11-30 18:24:35
【问题描述】:
我正在使用自动布局和情节提要。我尝试更改 viewDidLoad: 中的约束,以便考虑不同的设备型号。约束已成功连接为 IBOutlet。
在 viewDidLoad 中:我像这样更改约束:
self.containerConstraint.constant = 250
我不想为约束设置动画(我后来为它设置了动画并且效果很好)。我只想让它在 viewController 出现时将限制在正确位置的视图设置为。这通常有效,但是在这种情况下,它坚持使用情节提要中确定的值。这就是约束的样子:
我该怎么办?
【问题讨论】:
-
尝试在
viewDidLayoutSubviews中设置self.containerConstraint.constant = 250。您还应该考虑如何使用布局约束来使您受益,以避免在每个设备的基础上设置常量。 -
viewDidLoad来早了。 -
Krompir2 ... dasdom 在这一点上是正确的,不幸的是,不是因为 dasdom 而不幸,而是因为当视图实际上是用视图控制器中的实际“框架”和值“设置”时才不幸生命周期。这是细分:使用自动布局,在 ViewDidLoad 或 ViewWillAppear 中为框架设置了零值,这些值在 ViewDidLayoutSubviews 或 ViewDidAppear 之前没有设置为自动布局。您可以在使用 AutoLayout 的视图上使用 NSLog 进行检查。检查 NSStringFromCGrect(someView.frame)。在 ViewdidLoad 或 Viewwillappear 中记录此内容将返回 {0,0}{0,0}
-
所以,我的意思是尝试在 ViewDidLayOutSubviews 或 ViewDidAppear 中设置约束。
-
到目前为止,我已经在 viewDidLoad 中设置了除一个约束之外的所有约束。对于我在这里提出的问题,它非常有效。现在我将 constrain.constant 代码发送到 viewDidLayoutSubviews 或 viewDidLoad 并且没有任何约束正常工作。很奇怪
标签: ios storyboard uistoryboard nslayoutconstraint