【问题标题】:where to update constraint in view controller life cycle在视图控制器生命周期中更新约束的位置
【发布时间】:2018-03-17 13:38:15
【问题描述】:

我想更新约束常量和乘数,我想在右视图控制器生命周期事件中更新这些约束

  • 加载视图

  • viewDidLoad

  • viewWillAppear

  • viewWillLayoutSubviews

  • viewDidLayoutSubviews

  • viewDidAppear

有些帖子说最好在 UpdateViewConstraints viewcontroller 方法

与此相关的混乱太多了。

请大家解释一下

【问题讨论】:

  • 您没有为您的问题提供足够的上下文。在什么情况下需要更新成本约束?什么时候发生变化?总是,作为设置视图控制器的一部分?
  • 加载视图控制器时,我想在视图控制器中设置视图的约束
  • 按钮单击后的某个时间我想更改某些视图的约束
  • 那么听起来你应该为按钮点击事件更新处理程序中的约束。
  • @Paulw11 - 第一个“当加载视图控制器时我想为视图控制器中的视图设置约束”怎么样?

标签: ios uiviewcontroller nslayoutconstraint ios-autolayout ios-lifecycle


【解决方案1】:

在情节提要中创建约束。从您的约束中按住 Control 并拖动到您的源文件中,以创建这些约束的出口。

然后,在您的按钮IBAction 方法中,将常量值更新为约束并调用layoutIfNeeded()

正如 Paul 在评论中所说,如果您在代码中创建视图,还要在代码中创建约束并将它们保存到视图控制器的属性中,然后在您的按钮 IBAction 中使用这些属性,如上所述。

【讨论】:

  • 谢谢 我想知道在哪里可以更新视图控制器生命周期方法中的约束?基本上约束与 viewcontroller 的初始视图外观(如高度、宽度等)有关。我想在正确的位置更新它,以便在加载视图控制器时视图外观不会在 UI 中引起任何抖动
  • 如果您需要在视图显示之前调整约束,请将代码放在 viewWillAppear() 中,并在调整约束后调用 layoutIfNeeded()。
  • 但是视图的移动出现了,看起来很尴尬。例如,默认情况下,它的高度可能是 100 像素,但在 viewwillappear 中它可能会将其设置为 200 像素,这对肉眼可见,例如 100 像素,然后在眼睛看来它似乎变成 200 像素,这让我觉得可能在我必须做的不同的地方
猜你喜欢
  • 1970-01-01
  • 2023-03-31
  • 2014-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多