AnimationSugar 0.0.2

AnimationSugar 0.0.2

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2016 年 5 月
SPM支持 SPM

Matt Bridges 维护。



AnimationSugar

AnimationSugar

AnimationSugar 是一个小巧的 Swift 库,可以使 iOS 动画代码稍显不那么丑陋。

当迭代动画时,在多个 UIView.animateWithDuration 方法签名之间切换可能很痛苦。多步骤动画嵌套在完成块中可能很快就会变成难以阅读的混乱。

它是基于 Intrepid 构建。

示例

animate {
    view.translate(tx: 150)
}

Image of animation to the right

animate {
    view.translate(tx: 150)
}
.withSpring(dampingRatio: 0.5, initialVelocity: 0)

Image of animation with spring

animate {
    view.translate(tx: 150)
}
.thenAnimate {
    view.translate(ty: 150)
}
.thenAnimate {
    view.translate(tx: -150)
}
.thenAnimate {
    view.translate(ty: -150)
}

Image of animation in a square

animate(duration: 0.3) {
    view.translate(tx: 150)
}
.withOption(.CurveEaseOut)
.withCompletion { _ in
    view.backgroundColor = UIColor(white: 0.8, alpha: 1.0)
}

Image of animation with completion

使用方法

参考

动画助手

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

  • 在上一动画完成后,链接一个新的动画来执行。请参见上面的“square”示例。如果没有指定持续时间参数,则使用默认持续时间(参见 defaultAnimationDuration

static var defaultAnimationDuration

  • 更改默认动画持续时间,以便使用 animate()thenAnimate() 时不带持续时间参数。此值初始化为 0.3 秒,可以随时更改,即 Animation.defaultAnimationDuration = 0.25

UIView 助手

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

  • 视图从可见淡出到不可见。可以与其他动画连接。