添加视图会导致 Storyboard 中的约束更新

Adding a view causes constraints in Storyboard to update

我创建了一个 UIScrollView 并在故事板中设置了约束,但有时我会在运行时将 UIScrollView 移动到不同的位置。

当我以编程方式创建自定义 UIView 并将其添加到主 UIView 时,我的问题就出现了。我的约束将更新,如果我的 UIScrollView 不在同一位置,它将被移动到故事板设置。

例如,假设我的 UIScrollView 固定在屏幕顶部,然后在运行时将其移动到屏幕底部。如果我执行这段代码:

  let menu = UIView()
  menu.frame.size = CGSize(width: 210, height: 80)
  menu.center = view.center
  view.addSubview(menu)

我的 UIScrollView 将移回屏幕上的点击。我试过了,但没用:

  myScrollView.constraints.first?.isActive = false

使用自动布局和约束时,无法通过显式设置 view.frame 来更改框架。

如果您尝试这样做,那么在下一次 UI 更新时,自动布局会将视图重置为其约束。

如果您需要在 运行 时移动/调整视图大小,您需要引用您设置的约束,然后修改约束。

例如,如果您的滚动视图距离视图顶部 20 磅,并且您想在 运行 时将其向下移动 50 磅...

  • 为顶部约束创建一个IBOutlet
  • 在代码中,使用myTopConstraint.constant = 70.0