【发布时间】:2017-11-01 06:26:49
【问题描述】:
我想在运行时使用约束以编程方式更改视图的位置 我有以下观点安排
|
viewA
|
viewB
|
viewC
假设我将viewA 和topAnchor 约束设置为父视图边缘的顶部,viewB 将topAnchor 设置为viewA 等等viewC
我想在运行时更改这些视图在某些操作上的位置
|
viewA
|
viewC
|
viewB
我为viewB 存储了两个不同的约束,一个在viewA 的顶部,另一个在viewC 的顶部
viewBTopConstraints = viewB.topAnchor.constraint(equalTo: viewA.bottomAnchor, constant: TOP_SPACE)
newViewBTopConstraints = viewB.topAnchor.constraint(equalTo: viewC.bottomAnchor, constant: TOP_SPACE)
在我的切换操作方法中,我做了类似的事情
viewBTopConstraints?.isActive = false
newViewBTopConstraints?.isActive = true
这在第一次运行时有效,但第二次失败,在视图调试器中进一步调试时我发现它会创建重复的约束而不是更改原始约束。
【问题讨论】:
-
你应该只在第一次之后修改
isActive。 -
有没有办法实现这种行为?我想要的只是根据某些操作切换这些视图的位置,因为我已经使用约束以编程方式创建了我的视图,所以我无法弄清楚。
标签: ios swift autolayout constraints