MorphyTransitions
慢动作下的转换示例
视频教程
说明(Storyboard 滚动查看代码说明)
安装 Cocoapod 后(详细信息见下文)
步骤 1
用 TransNavController 替换 UINavigationController
步骤 2
每个视图现在都会在你的故事板中有一个形态 ID 部分。创建与相互转换的视图相对应的 ID。例如,如果我想从起始视图控制器转换到目标视图控制器的左上角绿色视图,我将这两个视图命名为相同的形态 ID。在本例中,我将它们命名为 one,但你可以选择任何标识符。
步骤 3
完成!
指令(用于代码)
步骤 1
用 TransNavController 替换 UINavigationController
步骤 2
每个视图现在会有一个名为 morphIdentifier 的变量。创建与相互转换的视图相对应的 morphIdentifiers。例如,如果我想从起始视图控制器的左上角绿色视图转换到目标视图控制器的左上角绿色视图,我将这两个视图命名为相同的 morphIdentifiers。在本例中,我将它们命名为 one,但你可以选择任何标识符。
beforeVC.one.morphIdentifier = "one"
afterVC.one.morphIdentifier = "one"
步骤 3
完成!
UIView中的附加动画辅助
func overlapViewWithReset(dest:UIView, animationDuration:TimeInterval, doesFade:Bool = false, fadeDuration:TimeInterval = 0.0, callback:@escaping ((_ resetBlock:@escaping()->Void) -> Void) = {(resetBlock:@escaping()->Void) in resetBlock() }) throws
描述 调用视图叠加到目标视图上
dest: 目标视图,将self视图叠加于其上
animationDuration: 叠加所需的时间
doesFade: 叠加后,如果设置为true,将使self视图渐隐显示dest视图
fadeDuration: 如果doesFade设置为true,这里是self渐隐所需的时间
callback: 动画和可能的渐隐动画发生后的回调
resetBlock: 用于将视图重置到其原始位置及其原始布局的块。务必调用reset,否则框架将锁定在非autolayout格式
beforeVC.one.overlapViewWithReset(dest:beforeVC.two ....
func swapViewsWithReset(dest:UIView, animationDuration:TimeInterval, doesFade:Bool = false, fadeDuration:TimeInterval = 0.0, callback:@escaping ((_ resetBlock:@escaping()->Void) -> Void) = {(resetBlock:@escaping()->Void) in resetBlock() }) throws
描述 交换调用视图与dest视图,然后重置回原始位置
dest: 想要交换的dest视图
animationDuration: 交换所需的时间
doesFade: 交换后,如果设置为true,将使self和dest视图渐隐
fadeDuration: 如果doesFade设置为true,这里是self和dest渐隐所需的时间
callback: 动画和可能的渐隐动画发生后的回调
resetBlock: 用于将视图重置到其原始位置及其原始布局的块。务必调用reset,否则框架将锁定在非autolayout格式
beforeVC.one.swapViewsWithReset(dest:beforeVC.two ....
func swapView(dest:UIView, animationDuration:TimeInterval, doesFade:Bool = false, fadeDuration:TimeInterval = 0.0, callback:@escaping (() -> Void) = {}) throws
描述 交换调用视图与dest视图,包括它们的nslayouts。技巧:(要通过移动视图从一个布局集合到另一个布局集合,请设置dest视图为不可见,然后在工作可见和不可见视图之间进行动画。)
dest: 想要交换的dest视图
animationDuration: 交换所需的时间
doesFade: 交换后,如果设置为true,将使self和dest视图渐隐
fadeDuration: 如果doesFade设置为true,这里是self和dest渐隐所需的时间
callback: 动画和可能的渐隐动画发生后的回调
beforeVC.one.swapView(dest:beforeVC.two ....
示例
要运行示例项目,首先clone仓储库,然后从示例目录运行pod install
。
安装
MorphyTransitions可通过CocoaPods使用。要安装它,只需在Podfile中添加以下行:
pod 'MorphyTransitions'
作者
Arjay Waran,[email protected]
许可
MorphyTransitions遵循MIT许可。有关更多信息,请参阅LICENSE文件。