19、iOS视图动画:原理、实现与控制

iOS视图动画:原理、实现与控制

1. 反向动画示例

当两个动画直接相互对立时,会产生有趣的效果。以下是一个平滑自动反转动画的示例代码:

let yorig = self.v.center.y
let anim = UIViewPropertyAnimator(duration: 2, curve: .easeInOut) {
    self.v.center.y += 100
}
anim.addAnimations({
    self.v.center.y = yorig
}, delayFactor: 0.5)
anim.startAnimation()

在这个动画中,视图会先朝着比原始位置低 100 点的位置移动,但在大约一半的路程时,它会平滑地减速并反转,最终回到原始位置。

2. 时间曲线

时间曲线将动画已过去的时间比例(x 轴)与动画已发生的变化比例(y 轴)进行映射。它的端点是 (0.0, 0.0) 和 (1.0, 1.0),因为在动画开始时,没有时间流逝,也没有发生变化;在动画结束时,所有时间都已过去,所有变化都已发生。时间曲线主要分为两种:立方贝塞尔曲线和弹簧曲线。

2.1 立方时间曲线

立方贝塞尔曲线由其端点定义,每个端点只需要一个贝塞尔控制点来定义曲线的切线。由于曲线的端点是已知的,定义两个控制点就足以描述整个曲线。

例如,内置的缓入缓出计时函数由两个控制点 (0.42, 0.0) 和 (0.58, 1.0) 定义。以下是不同方式指定时间曲线的情况:
-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值