Swift:通过动画以编程方式更改特定约束
我有两个imageview,在两个imageViewz之间有一个5pt“DragButton”的小对象 在左侧的imageview中,我有一个以拖动按钮为目标的右边缘约束 我想在代码中更改这个约束,我想删除这个绑定到拖动按钮的约束,并用一个绑定到右屏幕边缘的约束替换它,我想约束为0磅,就像l图像占据整个屏幕的宽度一样 我想给他一个动画这里有两个截图帮助你理解:Swift:通过动画以编程方式更改特定约束,swift,animation,constraints,Swift,Animation,Constraints,我有两个imageview,在两个imageViewz之间有一个5pt“DragButton”的小对象 在左侧的imageview中,我有一个以拖动按钮为目标的右边缘约束 我想在代码中更改这个约束,我想删除这个绑定到拖动按钮的约束,并用一个绑定到右屏幕边缘的约束替换它,我想约束为0磅,就像l图像占据整个屏幕的宽度一样 我想给他一个动画这里有两个截图帮助你理解: 在情节提要中添加这两个约束(也可以在代码中创建) 1) Image.right ScreenEdge.right(命名为pinRigh
在情节提要中添加这两个约束(也可以在代码中创建)
1) Image.right ScreenEdge.right(命名为
pinRight
),2) Image.right DragButton.left(命名为
pinright with DragButton
)。3) 设置
pinRight
999的优先级(小于pinRightWithDragButton
)(在没有警告的情况下同时存在)4) 创建两者的IBOutlet,不要使IBOutlet
弱
,删除弱
5) 在代码中一次启用一个并禁用另一个
func makeImageView(fullScreen: Bool) {
pinRight.isActive = fullScreen
pinRightWithDragButton.isActive = !fullScreen
UIView.animate(withDuration: 0.5) {
view.layoutIfNeeded()
}
}
*或者,您也可以更改它们的优先级
使用StackView执行此任务
我建议您将所有3个对象添加到水平堆栈视图(选择所有3个对象,然后按下所提供图像中高亮显示的按钮(不要被我高度专业的编辑技能吓倒:)
向StackView添加约束,然后使用StackView选项。此外,仅向视图和拖动按钮添加高度和宽度
我会添加间距->5
接下来,将所有3个对象的IBOutlets添加到ViewController中,并在需要时简单地隐藏对象,其余对象将填充整个StackView,然后取消隐藏,对象将被放回视图并看起来很好。(例如:obj1.ishiden=true)你能粘贴到目前为止你所做的代码吗?你想让它在某个特定的时刻一直向右还是一直向右?你想要动画的是什么?我仍然没有做代码,因为我不知道如何做,它不会一直像那样,只是在我执行某个函数的精确时刻。正常的动画只是sm500毫秒的速度。thanks@mickael它应该能够恢复正常吗?是的,他必须能够回到他的位置