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