我创建了一个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
答案 0 :(得分:1)
使用自动布局和约束时,不能通过显式设置view.frame
来更改帧。
如果您尝试这样做,则在下一个UI更新中,自动布局会将视图重置为其约束。
如果需要在运行时移动视图/调整视图大小,则需要引用已设置的约束,然后修改约束。
例如,如果滚动视图从视图顶部开始被限制20点,并且您想在运行时将其向下移动50点...
IBOutlet
myTopConstraint.constant = 70.0