Motion
欢迎使用Motion,这是一个用于为视图、层和视图控制器创建美观动画和转换的库。
照片示例
查看以下示例项目照片开始使用。
Motion是针对谁的?
Motion设计适合初学者到专家的开发者。对于初学者,您将接触非常强大的API,这些API需要时间和经验才能自己开发,专家将欣赏通过使用Motion节省的时间。
您将学到什么
您将学习如何使用Motion,包括对基本概念的一般介绍和易于使用的代码片段。
转换
使用名为 motionIdentifier
的链接标识属性,运动转换将源视图转换为目标视图。
匹配 | 平移 | 旋转 | 弧线 | 缩放 |
---|---|---|---|---|
示例使用
使用转换从一个视图控制器转换到另一个视图控制器的示例
视图控制器 1
greyView.motionIdentifier = "foo"
orangeView.motionIdentifier = "bar"
视图控制器 2
isMotionEnabled = true
greyView.motionIdentifier = "foo"
orangeView.motionIdentifier = "bar"
orangeView.transition(.translate(x: -100))
上述代码段通过使用 motionIdentifier
将 视图控制器 1
中的源视图链接到 视图控制器 2
中的目标视图。可以在转换过程中使用 transition 方法向视图添加动画。该方法接受配置视图动画的 MotionTransition 结构体。
UINavigationController, UITabBarController 和 UIViewController 转换
运动提供了默认转换,这些转换可以使用于 UINavigationControllers、UITabBarControllers 和呈现的 UIViewControllers。
推送 | 滑动 | 缩放滑动 | 覆盖 | 页面 | 淡入淡出 | 缩放 |
---|---|---|---|---|---|---|
示例用法
使用带有缩放转换的 UINavigationController 从一个视图控制器过渡到另一个视图控制器的示例
UINavigationController
class AppNavigationController: UINavigationController {
open override func viewDidLoad() {
super.viewDidLoad()
isMotionEnabled = true
motionNavigationTransitionType = .zoom
}
}
要添加自动反向转换,请使用 autoReverse
。
motionNavigationTransitionType = .autoReverse(presenting: .zoom)
动画
Motion 提供了创建惊艳动画所需的构建块,而无需付出太多努力。Motion 的动画 API 将使维护变得轻而易举,并且更改也更加简单。要创建动画,请使用视图或层的 animate 方法并传递一批 MotionAnimation 结构。MotionAnimation 结构是可配置的值,用于描述如何对属性或属性组进行动画处理。
背景颜色 | 圆角半径 | 淡入淡出 | 旋转 | 大小 | 弹簧 |
---|---|---|---|---|---|
边框颜色 & 边框宽度 | 深度 | 位置 | 缩放 | 旋转 | 平移 |
---|---|---|---|---|---|
示例用法
let box = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
box.backgroundColor = .blue
box.animate(.background(color: .red), .rotate(180), .delay(1))
在上面的代码示例中,创建了一个宽度为 100、高度为 100 且背景颜色为蓝色的盒子视图。在创建视图的常规创建之后,将 Motion animate 方法传递了 MotionAnimation 结构,这些结构指定视图在延迟 1 秒后动画到红色背景颜色并旋转 180 度。这就是创建动画的大致想法。
要求
- iOS 8.0+
- Xcode 8.0+
通讯
- 如果您需要帮助,请使用 Stack Overflow。(标签 'cosmicmind')
- 如果您想提问一个一般性问题,请使用 Stack Overflow。
- 如果您发现了一个错误,并能提供可靠的复现步骤,请开一个问题。
- 如果您有一个功能请求,请开一个问题。
- 如果您愿意贡献,提交一个拉取请求。
安装
嵌入式框架需要至少iOS 8的部署目标。
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装它:
$ gem install cocoapods
要使用 CocoaPods 在您的 Xcode 项目中集成 Motion 的核心功能,请将其在您的 Podfile
中指定
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'Motion', '~> 3.1.0'
然后,运行以下命令:
$ pod install
Carthage
Carthage 是一个去中心化的依赖管理器,它构建您的依赖项并提供二进制框架。
您可以使用 Homebrew 用以下命令安装 Carthage:
$ brew update
$ brew install carthage
要使用 Carthage 在您的 Xcode 项目中集成 Motion,请在您的 Cartfile 中指定它
github "CosmicMind/Motion"
运行 carthage update
以构建框架,并将构建的 Motion.framework
拖入您的 Xcode 项目。
变更日志
Motion 是一个不断发展的项目,在其开发过程中会遇到变更。建议在更新版本之前查看变更日志。
协议
MIT许可协议(MIT)
版权所有(C)2019,CosmicMind,Inc. http://cosmicmind.com. 保留所有权利。
在此特此许可,免费向任何获得此软件及其相关文档副本(以下简称"软件")的个人授予在使用、复制、修改、合并、发布、分发、再许可及/或出售软件副本的权利,并允许向获得软件副本的个人授予上述权利,但必须遵守以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分。
该软件按原样提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权持有人均不对因使用或依赖该软件或与该软件的使用或其它方式相关的索赔、损害或其他责任负责,无论此类索赔、损害或其他责任源于合同、侵权法或其他法律,即便被告知该等索赔、损害或其他责任的可能。