ICGTransitionAnimation 是一个用于自定义 iOS 7 中转场动画的库。
v 1.01
v 1.0
将名为 ICGTransitionAnimation
的子文件夹拖放到您的项目中,您就完成了。
自定义导航转场
创建一个 ICGNavigationController
实例,并设置您的首选动画控制器以及相应的转场样式(如果不设置,将使用默认样式)。
ICGNavigationController *navigationController = [[ICGNavigationController alloc] initWithRootViewController:viewController];
ICGLayerAnimation *layerAnimation = [[ICGLayerAnimation alloc] initWithType:ICGLayerAnimationCover];
navigationController.animationController = layerAnimation;
如果您使用的是故事板,请确保您的导航控制器的自定义类是 ICGNavigationController
,这样您就可以通过任何视图控制器来设置其动画控制器。例如,您可以在根视图控制器的 viewDidLoad
方法中添加以下内容:
ICGNavigationController *fancyNavigationController = (ICGNavigationController *)self.navigationController;
ICGLayerAnimation *layerAnimation = [[ICGLayerAnimation alloc] initWithType:ICGLayerAnimationCover];
fancyNavigationController.animationController = layerAnimation;
您还可以查看故事板示例,了解如何集成该库。
自定义模态转场
为了自定义模态转场动画,您需要确保显示视图控制器是 ICGViewController
的子类,并为它设置一个自定义动画控制器。
请注意:只有在将模态视图控制器的转场委托设置为显示视图控制器的情况下,转场才能正常工作(请参阅下面的示例代码)。
// ICGMainViewController is a subclass of ICGViewController
ICGMainViewController *mainController = [[ICGMainViewController alloc] initWithNibName:@"ICGFirstViewController" bundle:nil];
ICGSlideAnimation *slideAnimation = [[ICGSlideAnimation alloc] init];
slideAnimation.type = ICGSlideAnimationFromTop;
mainController.animationController = slideAnimation;
// View controller to be modally presented - this can subclass any UIViewController subclass.
ICGModalViewController *modalController = [[ICGModalViewController alloc] initWithNibName:@"ICGModalViewController" bundle:nil];
modalController.transitioningDelegate = mainController.transitioningDelegate; // this is important for the transition to work
[modalController.navigationController presentViewController:viewController animated:YES completion:nil];
交互式转场
如果您正在使用支持交互式转场的动画控制器,确保您已启用交互对象上的交互。
// If you want the push / pop transition to be interactive, enable interaction on your ICGNavigationController instance
navigationController.interactionEnabled = YES;
// If you want the modal transition to be interactive, enable interaction on the presenting view controller
mainViewController.interactionEnabled = YES;
默认情况下,库中提供了一些基本的转场自定义动画控制器。然而,我们鼓励您通过继承 ICGBaseAnimation
来创建自己独特的转场样式。这个想法非常简单——您只需要重写强制方法 animateTransition:fromView:toView:
。如果您还想添加交互式转场,确保重写 setInteractionEnabled
。
有关示例代码,请查看库中提供的 ICGSlideAnimation
的实现,它支持自定义动画和交互过渡。
由于 ICGTransitionAnimation 使用 UIKit Dynamics 和动态效果,因此需要 Xcode 5。该库支持 iOS 7,同时也可与 iOS 6 兼容。
ICGTransitionAnimation 使用 ARC。如果您在非 ARC 项目中使用 ICGTransitionAnimation,您需要在每个 ICGTransitionAnimation 源文件上设置 -fobjc-arc
编译器标志。要在 Xcode 中设置编译器标志,请转到您的活动目标并选择“构建阶段”选项卡。然后选择 ICGTransitionAnimation 源文件,按 Enter 键,输入 -fobjc-arc 并按“完成”键以启用 ICGTransitionAnimation 的 ARC。
欢迎提交有关错误修复或改进的贡献。请随意提交拉取请求。
ICGTransitionAnimation 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。