测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布上次发布 | 2017年3月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✓ |
由 Artem Novichkov 维护。
TransitionRouter
帮助您快速轻松地创建控制器之间的自定义转换。交互原型在此处可用:链接。
如何使用 TransitionRouter
?就像 ABC 一样简单!您需要创建一个路由器,类型如下
let topRouter = TransitionRouter(type: .top)
您还可以创建自己的自定义转换。只需创建一个符合 TransitionAnimator
协议的对象,
let fadeRouter = TransitionRouter(type: .custom(animator: FadeTransitionAnimator()))
当您需要启动任何自定义转换时,将路由器设置为要展示的控制器
let vc = SecondViewController()
vc.transitioningDelegate = selectedRouter
present(vc, animated: true)
当然,您可以自定义默认转换的选项
UIViewAnimationOptions
可以通过 options
属性更改动画选项。
要创建交互式转换,您需要使用 interactive
参数创建路由器
let leftInteractiveRouter = TransitionRouter(type: .left, interactive: true)
或直接通过属性设置
leftInteractiveRouter.interactive = true
当然,您可以控制转换的进度。创建 UIPanGestureRecognizer
或其子类,并设置路由器
let leftRecognizer = UIScreenEdgePanGestureRecognizer()
leftRecognizer.edges = .left
leftInteractiveRouter
.add(leftRecognizer)
.transition { [unowned self] router in
let vc = ColorViewController(color: .green)
vc.transitioningDelegate = router
self.present(vc, animated: true)
}
view.addGestureRecognizer(leftRecognizer)
您可以手动更新转换的进度
leftInteractiveRouter.update { recognizer -> CGFloat in
let translation = recognizer.translation(in: recognizer.view!)
return translation.x / recognizer.view!.bounds.width * 0.5
}
注意 - 对于您的自定义 animator,您必须手动设置更新逻辑。
要运行示例项目,请克隆存储库,然后首先从示例目录运行 pod install
文件 > 新建 > 项目
在根目录下创建一个Package.swift
文件。
import PackageDescription
let package = Package(
name: "NameOfYourPackage",
dependencies: [
.Package(url: "https://github.com/artemnovichkov/TransitionRouter", majorVersion: 0, minor: 1)
]
)
运行swift package fetch
打开Xcode项目文件。文件 > 新建 > 目标 > Apple的结合框架,如不需要Obj-C支持,请从导航器中删除.h文件。
在Finder中,将Packages/TransitionRouter/Sources
中的源代码拖动到你的项目中,并将其添加到TransitionRouter目标中。
将项目链接到TransitionRouter依赖项。选择主目标,在“通用”标签页中将CocoaTouchFramework添加到“已链接框架和库”中。
将源文件夹拖动到你的项目中。下载
Artem Novichkov,[email protected]
TransitionRouter可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。