ViewAnimator 3.1.0

ViewAnimator 3.1.0

测试经过测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2021年6月
SPM支持 SPM

Marcos Griselli 维护。



CocoaPods Carthage Codebeat License

ViewAnimator 是一个库,可以轻松构建复杂的 iOS UIView 动画。它为任何视图提供了一行动画,包括包含其他视图的视图,如 UITableView 和 UICollectionView 以及其单元格或 UIStackView 及其 arrangedSubviews。

完整视图          UITableView                                    UICollectionView

                   

Luke Zhao 的项目 Hero 启发的 SVG 动画

复杂布局

Messaki 创建的 UI,请务必查看他的个人资料。

标志和横幅由 @cintia_ve 创建

安装

CocoaPods

ViewAnimator 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中。

pod "ViewAnimator"

手动

将 swift 文件放入您的项目中 ViewAnimator/Classes 目录。

Carthage

github "marcosgriselli/ViewAnimator"

使用方法

ViewAnimator 提供一组 UIView 扩展,以便轻松将自定义动画添加到您的视图。从 2.0.0 版本开始,有两种方法使用这个扩展。

自动画视图

视图可以通过调用 .animate(animations: [Animation]) 自行动画,这是最基本的使用方法。下面是这个方法的全貌,它包含了许多默认参数:

func animate(animations: [Animation],
             reversed: Bool = false,
             initialAlpha: CGFloat = 0.0,
             finalAlpha: CGFloat = 1.0,
             delay: Double = 0,
             duration: TimeInterval = ViewAnimatorConfig.duration,
             usingSpringWithDamping dampingRatio: CGFloat = ViewAnimatorConfig.springDampingRatio,
             initialSpringVelocity velocity: CGFloat = ViewAnimatorConfig.initialSpringVelocity,
             completion: (() -> Void)? = nil)

动画多个视图

ViewAnimator遵循UIKit动画API风格的静态方法UIView.animate(视图: [UIView], 动画: [Animation])。这使得库非常易于使用,并且可扩展到任何类型的视图。正如上一个例子,该方法包含许多默认参数。

static func animate(views: [UIView],
                    animations: [Animation],
                    reversed: Bool = false,
                    initialAlpha: CGFloat = 0.0,
                    finalAlpha: CGFloat = 1.0,
                    delay: Double = 0,
                    animationInterval: TimeInterval = 0.05,
                    duration: TimeInterval = ViewAnimatorConfig.duration,
                    usingSpringWithDamping dampingRatio: CGFloat = ViewAnimatorConfig.springDampingRatio,
                    initialSpringVelocity velocity: CGFloat = ViewAnimatorConfig.initialSpringVelocity,
                    completion: (() -> Void)? = nil)

AnimationType

Direction

Direction提供了动画应该进行的轴和其移动方向。

let animation = AnimationType.from(direction: .top, offset: 30.0)
view.animate(animations: [animation])

Zoom

支持放大和缩小动画。

let animation = AnimationType.zoom(scale: 0.5)
view.animate(animations: [animation])

Combined Animations

您可以组合Animation的协议,以在动画块中应用多个转换。

let fromAnimation = AnimationType.from(direction: .right, offset: 30.0)
let zoomAnimation = AnimationType.zoom(scale: 0.2)
let rotateAnimation = AnimationType.rotate(angle: CGFloat.pi/6)
UIView.animate(views: collectionView.visibleCells,
               animations: [zoomAnimation, rotateAnimation],
               duration: 0.5)
UIView.animate(views: tableView.visibleCells,
               animations: [fromAnimation, zoomAnimation], 
               delay: 0.5)

Animation

Animation 协议为您提供了扩展ViewAnimator支持动画的可能性,除了animateRandom函数之外。

public protocol Animation {
    var initialTransform: CGAffineTransform { get }
}

UITableView/UICollection扩展

ViewAnimator提供了一套实用的扩展功能,使您在UITableViewUICollectionView中的动画变得更加简单。它们都可以轻松访问要动画化的分区中的单元格。

它们都提供了一个名为visibleCells(in section: Int)的方法,该方法返回一个包含UITableViewCellUICollectionViewCell的数组。

let cells = tableView.visibleCells(in: 1)
UIView.animate(views: cells, animations: [rotateAnimation, fadeAnimation])

提及

项目详情

需求

  • Swift 4.0
  • Xcode 7.0+
  • iOS 8.0+

贡献

欢迎提出建议合作💭,问题以及/或拉动请求.

如果您在您的应用中使用ViewAnimator,我很乐意了解,并在此处展示您的动画!

贡献者

作者

马克斯·格里塞利 | @marcosgriselli

Twitter Follow

Twitter Follow

许可协议

ViewAnimator 可在 MIT 许可协议下使用。有关更多信息,请参阅 LICENSE 文件。