【发布时间】:2020-06-12 15:40:37
【问题描述】:
我创建了一个 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
【问题讨论】:
-
“但我有时会在运行时将 UIScrollView 移动到不同的位置” -- 你是怎么做到的?听起来您正在运行时更改滚动视图的 frame,而不是更新其约束(例如设置
.constant值)。 -
我正在移动框架。我不知道我可以移动约束?我不熟悉约束
-
正如@DonMag 所说,当您使用约束时,您不应该更新帧值,而是应该更新constraint.constant。您可以将约束中的
@IBOutlet连接到您的代码,然后在代码中对其进行操作。 (如果你愿意,你也可以为它制作动画,但动画约束它比普通帧有点棘手)
标签: ios swift uiview uiscrollview constraints