添加视图会导致 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
我创建了一个 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