AnimationSugar 是一个小巧的 Swift 库,可以使 iOS 动画代码稍显不那么丑陋。
当迭代动画时,在多个 UIView.animateWithDuration
方法签名之间切换可能很痛苦。多步骤动画嵌套在完成块中可能很快就会变成难以阅读的混乱。
它是基于 Intrepid 构建。
animate {
view.translate(tx: 150)
}
animate {
view.translate(tx: 150)
}
.withSpring(dampingRatio: 0.5, initialVelocity: 0)
animate {
view.translate(tx: 150)
}
.thenAnimate {
view.translate(ty: 150)
}
.thenAnimate {
view.translate(tx: -150)
}
.thenAnimate {
view.translate(ty: -150)
}
animate(duration: 0.3) {
view.translate(tx: 150)
}
.withOption(.CurveEaseOut)
.withCompletion { _ in
view.backgroundColor = UIColor(white: 0.8, alpha: 1.0)
}
func animate(duration duration: NSTimeInterval = defaultAnimationDuration, animations: () -> ()) -> Animation
animate(duration: 0.3) { ... }
。如果没有指定持续时间参数,则使用默认持续时间(参见 defaultAnimationDuration
)。func withDelay(delay: NSTimeInterval) -> Animation
func withOption(option: UIViewAnimationOptions) -> Animation
withOption(.Autoreverse).withOption(.Repeat)
,或者使用数组例如 withOption([.Autoreverse, .Repeat])
。func withSpring(dampingRatio dampingRatio: CGFloat, initialVelocity: CGFloat) -> Animation
func withCompletion(completion: (Bool) -> ()) -> Animation
animate { ... }.withCompletion { ... }
func thenAnimate(duration duration: NSTimeInterval = defaultAnimationDuration, animations: () -> ()) -> Animation
defaultAnimationDuration
)static var defaultAnimationDuration
animate()
或 thenAnimate()
时不带持续时间参数。此值初始化为 0.3 秒,可以随时更改,即 Animation.defaultAnimationDuration = 0.25
。func translate(tx tx: CGFloat = 0, ty: CGFloat = 0)
transform
属性来平移视图func scale(sx sx: CGFloat, sy: CGFloat)
transform
属性来缩放视图func rotate(angle angle: CGFloat)
transform
属性来旋转视图func translateFrame(tx tx: CGFloat = 0, ty: CGFloat = 0)
frame
属性来平移视图func stretchFrame(deltaWidth deltaWidth: CGFloat, deltaHeight: CGFloat)
frame
func resizeFrame(width width: CGFloat, height: CGFloat)
frame
大小func flipHorizontal(perspectiveDistance: CGFloat = 1000.0)
func flipVertical(perspectiveDistance: CGFloat = 1000.0)
func fadeIn(duration duration: NSTimeInterval = Animation.defaultAnimationDuration) -> Animation
func fadeOut(duration duration: NSTimeInterval = Animation.defaultAnimationDuration) -> Animation