【问题标题】:can't change constraint.constant programmatically in viewDidLoad:无法在 viewDidLoad 中以编程方式更改 constraint.constant:
【发布时间】: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


【解决方案1】:

看到Constant 下的wR hR 选项了吗?这就是问题所在。看起来使用大小类的约束不能在 viewDidLoad 中设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多