Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift:通过动画以编程方式更改特定约束_Swift_Animation_Constraints - Fatal编程技术网

Swift:通过动画以编程方式更改特定约束

Swift:通过动画以编程方式更改特定约束,swift,animation,constraints,Swift,Animation,Constraints,我有两个imageview,在两个imageViewz之间有一个5pt“DragButton”的小对象 在左侧的imageview中,我有一个以拖动按钮为目标的右边缘约束 我想在代码中更改这个约束,我想删除这个绑定到拖动按钮的约束,并用一个绑定到右屏幕边缘的约束替换它,我想约束为0磅,就像l图像占据整个屏幕的宽度一样 我想给他一个动画这里有两个截图帮助你理解: 在情节提要中添加这两个约束(也可以在代码中创建) 1) Image.right ScreenEdge.right(命名为pinRigh

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

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

我想在代码中更改这个约束,我想删除这个绑定到拖动按钮的约束,并用一个绑定到右屏幕边缘的约束替换它,我想约束为0磅,就像l图像占据整个屏幕的宽度一样

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


在情节提要中添加这两个约束(也可以在代码中创建)
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它应该能够恢复正常吗?是的,他必须能够回到他的位置