概述
Gemini
?
什么是 Gemini
是一个用于 iOS 的基于滚动的高性能动画框架,使用 Swift 编写。你可以轻松使用 GeminiCollectionView
,它是 UICollectionView
的子类。
Gemini
允许你制作各种具有自定义属性的多重动画,而且还可以创建你自己的自定义滚动动画。
Gemini
还提供了一个基于方法链的流畅接口。你可以直观地简单地使用此接口。
collectionView.gemini
.circleRotationAnimation()
.radius(400)
.rotateDirection(.clockwise)
功能
- 具有滚动功能的丰富动画
- 易于使用
- 高度可定制
- 多种动画类型和属性
- 支持垂直和水平流布局
- 支持缓动函数
- 支持
Swift5.0
- 基于方法链的流畅接口
- 与
Carthage
兼容 - 与
CocoaPods
兼容 - 带有大量标准动画的示例项目
- 更多...
目录
动画类型和属性
- _cube
- 圆旋转您可以使用
CircleRotationDirection
配置旋转方向。 - 3D 向量旋转每种旋转类型都提供多种旋转效果
- 缩放
- 自定义您可以使用多个属性(如旋转、缩放、平移等)创建自己的自定义滚动动画。
此外,您还可以定制以下属性。
正方体
这是一个类似于Instagram的立方体动画。如果您想自定义立方体动画,请更改cubeDegree
。如果cubeDegree
为90,它将像常规六面体一样移动。
collectionView.gemini
.cubeAnimation()
.cubeDegree(90)
圆旋转
动画在圆内移动。您可以更改circleRadius
和CircleRotationDirection
。
collectionView.gemini
.circleRotationAnimation()
.radius(450) // The radius of the circle
.rotateDirection(.clockwise) // Direction of rotation.
.itemRotationEnabled(true) // Whether the item rotates or not.
三维向量旋转
适用于翻转
、俯仰
和偏航
动画。这些旋转动画基于三维向量设计。图-1显示了基于设备的旋转方向。
图1 俯仰滚转轴
参考:UIKit应用事件处理指南
Roll旋转
俯仰旋转
横滚旋转
每种类型的旋转动画都有RotationEffect
(例如RollRotationEffect
)和旋转角度。
自定义RotationEffect
(up
、down
、sineWave
、reverseSineWave
)和旋转角度。
在rollRotation
的情况下,如下所示
collectionView.gemini
.rollRotationAnimation()
.degree(45)
.rollEffect(.rollUp)
缩放
scaleUp
逐渐增加帧大小,scaleDown
减小。
collectionView.gemini
.scaleAnimation()
.scale(0.75)
.scaleEffect(.scaleUp) // or .scaleDown
自定义
您可以灵活轻松地自定义滚动动画。自定义 GeminiAnimation.custom
的属性,例如 scale
、scaleEffect
、rotationAngle
、translation
、easing
、shadowEffect
、alpha
、cornerRadius
、backgroundColor
、anchorPoint
等。
gif动画的定制方式如下
collectionView.gemini
.customAnimation()
.translation(y: 50)
.rotationAngle(y: 13)
.ease(.easeOutExpo)
.shadowEffect(.fadeIn)
.maxShadowAlpha(0.3)
或gif的右侧定制如下
collectionView.gemini
.customAnimation()
.backgroundColor(startColor: lightGreenColor, endColor: lightBlueColor)
.ease(.easeOutSine)
.cornerRadius(75)
更多示例代码请参见CustomAnimationViewController.swift。
缓动函数
Gemini
支持根据滚动距离的各种缓动函数。
- linear
- easeInQuad
- easeOutQuad
- easeInOutQuad
- easeInCubic
- easeOutCubic
- easeInOutCubic
- easeInQuart
- easeOutQuart
- easeInOutQuart
- easeInQuint
- easeOutQuint
- easeInOutQuint
- easeInSine
- easeOutSine
- easeInOutSine
- easeInExpo
- easeOutExpo
- easeInOutExpo
- easeInCirc
- easeOutCirc
- easeInOutCirc
阴影效果
默认值为 ShadowEffect.none
。在自定义类中返回 shadowView
,它是 GeminiCell
的子类。
- fadeIn
- nextFadeIn
- previousFadeIn
- fadeOut
- none
class CustomCollectionViewCell: GeminiCell {
@IBOutlet weak var customShadowView: UIView!
override var shadowView: UIView? {
return customShadowView
}
}
使用方法
- 使用 Gemini 类
Gemini
被设计成易于使用。使用 GeminiCollectionView
和 GeminiCell
。这些类是 UICollectionView
、UICollectionViewCell
的子类。
- 配置动画
使用基于方法链的流畅接口配置动画。您可以用增强可读性的代码来开发有表现力的代码。
- 调用动画函数
最后,在scrollViewDidScroll(_:)
中调用animateVisibleCells()
。
注意:如果您想在视图显示后立即适配动画,请曾在
collectionView(_:cellForItemAt:)
和collectionView(_:willDisplay:forItemAt:)
中调用animateCell(_:)
。
// Import Gemini
import Gemini
// Inherite GeminiCell
class CustomCell: GeminiCell {
...
}
// Conform to UICollectionViewDelegate and UICollectionViewDataSource
class CustomViewController: UIViewController: UICollectionViewDelegate, UICollectionViewDataSource {
// Inherite GeminiCollectionView
@IBOutlet weak var collectionView: GeminiCollectionView!
...
// Configure animation and properties
func configureAnimation() {
collectionView.gemini
.circleRotationAnimation()
.radius(400)
.rotateDirection(.clockwise)
}
// Call animation function
func scrollViewDidScroll(_ scrollView: UIScrollView) {
collectionView.animateVisibleCells()
}
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
if let cell = cell as? GeminiCell {
self.collectionView.animateCell(cell)
}
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CustomCell", for: indexPath) as! CustomCell
self.collectionView.animateCell(cell)
return cell
}
要运行示例项目,请克隆存储库,然后从Example目录运行pod install
。
需求
- Apple Xcode 10.2.1
- Swift 5.0
安装
CocoaPods
Gemini可以通过CocoaPods安装。要安装它,只需在Podfile中添加以下行:
pod "Gemini"
Carthage
在您的Cartfile
中添加以下行:
github "shoheiyokoyama/Gemini"
作者
Shohei Yokoyama
许可证
“Gemini”可供使用MIT许可证。更多信息请参阅许可证文件。