swift - Swift:使用动画以编程方式更改特定约束
问题描述
我有两个 imageview,在两个 imageViewz 之间我有一个 5pt“DragButton”的小对象。
在左侧的图像视图中,我有一个以拖动按钮为目标的右边缘约束。
我想在代码中更改这个约束,我想删除这个将它绑定到拖动按钮的约束,并将其替换为将它绑定到右侧屏幕边缘的约束,并且我希望约束为 0 pt l 图像占据了屏幕的整个宽度。
我想给他一个动画这里有两个截图帮助你理解:
解决方案
在情节提要中添加两个约束(也可以在代码中创建)
1)Image.right <-> ScreenEdge.right(命名pinRight
),
2)Image.right <-> DragButton.left(命名pinRightWithDragButton
)。
3)设置优先级为pinRight
999(小于pinRightWithDragButton
)(两者都存在而不发出警告)
4)创建两者的 IBOutlet ,不要制作 IBOutlet weak
,删除weak
5)在代码中一次启用和禁用另一个
func makeImageView(fullScreen: Bool) {
pinRight.isActive = fullScreen
pinRightWithDragButton.isActive = !fullScreen
UIView.animate(withDuration: 0.5) {
view.layoutIfNeeded()
}
}
*或者,您也可以更改他们的优先级。
推荐阅读
- javascript - 将 DynamoBD 与 API Gateway 集成的问题
- git - “npm init”和“git init”有什么区别?
- java - Android 11 是否限制无障碍服务在锁定屏幕中工作?
- c++ - 如何生成唯一字符,必须和上次生成的结果一致
- flutter - 参数类型 'Set
' 不能分配给参数类型 'Map ' - java - 带有没有外键的数据库的 Spring JPA
- flutter - 如何在 Flutter 中发出多个 http API 请求?
- c - 多个重载函数“abs”实例与参数列表匹配
- php - Laravel 8 Eloqunet:如何在 Laravel 中将 OR 条件设置为 where 子句
- c++ - 无法分配 sockaddr_in 的 sin_addr