Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.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
Ios 具有NSLayoutConstraints的百分比驱动动画_Ios_Swift_Animation_Core Animation_Uiviewanimation - Fatal编程技术网

Ios 具有NSLayoutConstraints的百分比驱动动画

Ios 具有NSLayoutConstraints的百分比驱动动画,ios,swift,animation,core-animation,uiviewanimation,Ios,Swift,Animation,Core Animation,Uiviewanimation,我正在尝试实现一个手势驱动程序交互式动画,其中使用NSLayoutConstraints执行布局更改。使用UIView.animate(withDuration:)时,动画效果良好,但不是百分比驱动的 private func configureRight() { UIView.animate(withDuration: 1.0) { NSLayoutConstraint.activate(self.constraints2) NSLayoutConstr

我正在尝试实现一个手势驱动程序交互式动画,其中使用
NSLayoutConstraints
执行布局更改。使用
UIView.animate(withDuration:)
时,动画效果良好,但不是百分比驱动的

private func configureRight() {
    UIView.animate(withDuration: 1.0) {
        NSLayoutConstraint.activate(self.constraints2)
        NSLayoutConstraint.deactivate(self.constraints1)
        self.layoutIfNeeded()
    }
} 
当您只是更改已安装的约束时,它很简单。如果起始值为50,结束值为100,并且您希望将动画设置为50%,则只需在动画块中将该值更改为75即可。但是
启用
禁用
之间没有中间环节


我尝试使用
cabasicanition
,但似乎无法使用
cabasicanition
激活/停用布局约束。是否有方法访问
UIView.animate(持续时间:)
创建的动画,以使用手势识别器手动修改动画进度

是的,您可以深入研究UIView动画创建的底层动画并对其进行操作,但这相当痛苦

我有一个名为Github的项目(在Objective-C中),它创建了基于UIView和基于CAAnimation的关键帧动画版本,并演示了如何暂停、恢复和来回拖动关键帧动画。该存储库中还有一个名为 “”这说明了如何计算系统响应UIView动画生成的动画

我花了很长时间才弄明白,而且我已经有一段时间没看了,所以我不记得那些血淋淋的细节了。就像我说的,事情变得复杂了


您可能希望使用iOS 10中添加的新的
UIViewPropertyAnimator

我在github上有一个名为的项目,它演示了如何使用这个新类。它使来回拖动动画更加容易,尽管拖动动画不会保留自定义计时曲线

编辑:
顺便问一下,你的两组不同的约束是什么?如果要在动画的不同部分之间插值,可能需要找到一种方法来修改一个或多个约束上的常量值,而不是关闭一个约束然后打开另一个约束。(例如,您在视图上有一个约束,该约束指定相对于其superview顶部的Y位置为50。您可以设置动画,将约束常数从50更改为300,以向下移动视图。

是的,您可以深入研究UIView动画创建的基础动画并对其进行操作,但这非常痛苦

我有一个名为Github的项目(在Objective-C中),它创建了一个基于UIView和基于CAAnimation的关键帧动画版本,并演示了如何暂停、恢复和来回拖动关键帧动画。在名为 “”这说明了如何计算系统响应UIView动画生成的动画

我花了很长时间才弄明白,我已经有一段时间没看了,所以我记不清那些血淋淋的细节了。就像我说的,事情变得复杂了


您可能希望使用iOS 10中添加的新的
UIViewPropertyAnimator

我在github上有一个名为的项目,它演示了如何使用这个新类。它使来回拖动动画更加容易,尽管拖动动画不会保留自定义的计时曲线

编辑:
顺便说一句,你的两组不同的约束是什么?如果你想在动画的不同部分之间插值,你可能想找到一种方法来修改一个或多个约束上的常量值,而不是关闭一个约束然后打开另一个约束。(例如,您在一个视图上有一个约束,该约束指定相对于其superview顶部的Y位置为50。您可以设置动画,将约束常数从50更改为300,以向下移动视图。

感谢您提供的资源。我觉得
UIViewPropertyAnimator
正是我所需要的!我会查看您的回复。)当我找到它时,请告诉我!
UIViewPropertyAnimator
正是我所需要的。您的github存储库中的代码完美地覆盖了我的用例!感谢您提供的资源。我感觉,
UIViewPropertyAnimator
正是我所需要的!我会查看您的存储库,并在我找到它时通知您我明白了!
UIViewPropertyAnimator
正是我所需要的。github存储库中的代码完美地覆盖了我的用例!