Skip to content
This repository has been archived by the owner on Jul 2, 2023. It is now read-only.
DianQK edited this page Dec 27, 2015 · 2 revisions

整体框架

我将转场分成以下几个模块,手势等各种逻辑处理,转场动画实例,更新 delegate,而在这三者里面手势逻辑、更新 delegate 可以高度复用的(我会考虑在下一个版本将手势部分单独移出来),当我们处理好这些几乎可以复用的代码,我们就可以只专注与写转场动画实例这一小部分。

Framework

阅读 pdf 版本.

关于单例

用单例管理动画实例是一个不错的选择,但我更倾向于不去用单例管理这些。如上图,对应的协议上都有一个变量保留动画实例56789 动画实例应该是和 Push 或者 Present 的 viewController 共生死的,

API 的设计

当前的 API 如下:

public func tr_pushViewController(viewcontroller: UIViewController, method: TRPushMethod, completion: (() -> Void)?)

转场动画可以分成大概两类,需要指定额外参数,不需要指定额外参数。而这些仅仅是与动画有关,将这样的代码层层传递是很糟糕的方案。让参数尽可能少会更优美,所以参数只增加了一个TRPushMethod,多亏 swift 的枚举的特性,我们可以在枚举中加入不同参数,同时直接将动画所需的参数传给动画实例。

转场动画实例

这里我们既可以写两个实例,分别用于 Push 和 Pop,但我更推荐写一个实例,在内部处理两种情况。大多转场动画中, Pop 是 Push 的逆动画,于是基本上只是交换一下起始和结束的参数。对于需要参数的动画,更可能需要保留某些值,在一个实例中,使用这些值会更为方便。在动画指导中,我会简单介绍如何写一个适用于该框架的转场动画。这会帮助你更快捷的写你需要的自定义动画(我更希望你也能提交你华丽的动画到这个库中,我们一起完善它:])。

项目的完善和维护

我自己不算一名资深的程序员,所以项目中一定还有很多可以改进的空间,比如手势的分离,是否应该为 Push 和 Present 分别设置一个协议,文档的书写,更多更有意思的转场动画,所以我很期待你 fork 我的仓库,并提出的你的改进。关于动画的提交说明你可以阅读贡献代码章节。

Clone this wiki locally