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存储库中的代码完美地覆盖了我的用例!