添加视图会导致情节提要中的约束更新

时间:2020-02-28 14:03:39

标签: ios swift uiview uiscrollview constraints

我创建了一个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

1 个答案:

答案 0 :(得分:1)

使用自动布局和约束时,不能通过显式设置view.frame来更改帧。

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

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

例如,如果滚动视图从视图顶部开始被限制20点,并且您想在运行时将其向下移动50点...

  • 为最高约束条件创建一个IBOutlet
  • 在代码中,使用myTopConstraint.constant = 70.0