翻译自:QUICK GUIDE: ANIMATIONS WITH UIVIEWPROPERTYANIMATOR 译者:Haley_Wong iOS 10 带来了一大票有意思的新特性,像 UIViewPropertyAnimator let animator = UIViewPropertyAnimator(duration: 1.0, curve: .easeOut){ AView.center = finalPoint let animator = UIViewPropertyAnimator( duration: 1.0, point1: CGPoint( 用法与UIView 的动画方法类似,你可以定义出弹簧效果,阻尼系数的取值范围是0到1. let animator = UIViewPropertyAnimator( duration // Initialization let animator = UIViewPropertyAnimator(duration: 2.0, curve: .easeOut){ AView.alpha
{ self.model.backgroundColor = .systemBlue } completion: { _ in // UIViewPropertyAnimator 动画 _ = UIViewPropertyAnimator.runningPropertyAnimator(withDuration: 2.0,
Animation、UIViewPropertyAnimator。 关键词: #UIViewPropertyAnimator #交互式动画 这道题很明显是要求实现动画。然而,题目中对于动画的各种参数(持续时间,延时,速度控制等)都没有要求。 那么实现代码如下: // UIViewPropertyAnimator实现 let animator = UIViewPropertyAnimator(duration: 2, curve: .linear 这次考察的是交互式动画,那么交互式动画用 UIViewPropertyAnimator 来做最为方便。关于手势具体如何控制球的移动,请向面试官询问。 代码如下: var progress: CGFloat = 0 var animator: UIViewPropertyAnimator!
3.4UIViewPropertyAnimator 「UIViewPropertyAnimator」是iOS10开始苹果推动的新的动画api,相比 UIView block animation 可以更灵活的控制动画的过程 [UIViewPropertyAnimator runningPropertyAnimatorWithDuration:duration 再进一步调试发现与UIViewPropertyAnimator 里是有主动 setPreferredFrameRateRange:的操作,那是否可以从这里入手? 部分代码如下: if(@available(iOS 15.0, *)) { setFrameRateLevel(level); [UIViewPropertyAnimator 我们最终在视频号直播上验证测试如下: 先基于 「UIViewAnimationOptionPreferredFramesPerSecond30」 将直播点赞场景下的fps从高刷屏的120fps 降低到60fps,再基于 「UIViewPropertyAnimator
context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) { let propertyAnimator: UIViewPropertyAnimator if isFocused { propertyAnimator = UIViewPropertyAnimator(duration: 0.2, curve: .easeOut) self.transform = CGAffineTransform(scaleX: 1.1, y: 1.1) } } else { propertyAnimator = UIViewPropertyAnimator
CALayer 级别的动画通过灵活设置的 CoreAnimation,CoreAnimation 的常规操作,就是自定义路径 当然有苹果推了几年的 UIViewPropertyAnimator, 动画可交互性做得比较好