首页 > 解决方案 > Swift:使用动画以编程方式更改特定约束

问题描述

我有两个 imageview,在两个 imageViewz 之间​​我有一个 5pt“DragButton”的小对象。

在左侧的图像视图中,我有一个以拖动按钮为目标的右边缘约束。

我想在代码中更改这个约束,我想删除这个将它绑定到拖动按钮的约束,并将其替换为将它绑定到右侧屏幕边缘的约束,并且我希望约束为 0 pt l 图像占据了屏幕的整个宽度。

我想给他一个动画这里有两个截图帮助你理解:

第一张照片

第二张图片

标签: swiftanimationconstraints

解决方案


在情节提要中添加两个约束(也可以在代码中创建)
1)Image.right <-> ScreenEdge.right(命名pinRight),
2)Image.right <-> DragButton.left(命名pinRightWithDragButton)。
3)设置优先级为pinRight999(小于pinRightWithDragButton)(两者都存在而不发出警告)
4)创建两者的 IBOutlet ,不要制作 IBOutlet weak,删除weak
5)在代码中一次启用和禁用另一个

func makeImageView(fullScreen: Bool) {
    pinRight.isActive = fullScreen
    pinRightWithDragButton.isActive = !fullScreen
    UIView.animate(withDuration: 0.5) {
        view.layoutIfNeeded()
    }
}

*或者,您也可以更改他们的优先级。


推荐阅读