制作目的
- 想要自定义系统转场动画速度
- 放弃不顺畅的 NavigationBar 隐藏消失
- 直接干掉每个页面的 NavigationBar,在使用 UINavigationController 管理的同时,每个页面的 NavigationBar 都使用自定义的 UIView,这样既定制程度高又可以在不需要 NavigationBar 的页面无缝对接,包括一些之前 NavigationBar 动画也可以更轻松的利用自定义的 UIView 的适配动画来更灵活地实现
实现功能
- 可以设置一个自己认为舒适的速度来进行转场动画(该动画模仿系统转场动画效果,如果需要其他转场动画可以替换我的 LGFTransition 类,或者修改 LGFTransition 类的代码)
- 这个动画速度同时对边缘手势拖动 POP 返回上舒适地起作用
使用方式
-
pod 'LGFAnimatedNavigation' 或者 LGFAnimatedNavigation
-
接着在 AppDelegate 中导入头文件 UINavigationController+LGFAnimatedTransition.h
#import "UINavigationController+LGFAnimatedTransition.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 在这里配置是否使用自定义转场动画
// Configure whether to use a custom transition animation here
[UINavigationController lgf_AnimatedTransitionIsUse:YES];
// [UINavigationController lgf_AnimatedTransitionIsUse:YES showDuration: 1.0 modalDuration:1.0];
return YES;
}
- 在 didFinishLaunchingWithOptions 方法中调用 UINavigationController 由分类添加的新方法 lgf_AnimatedTransitionIsUse
- 传递 NO 或不调用该方法使用系统效果,调用该方法并传递 YES 启用此效果
- showDuration 控制显示动画想要执行的时间,默认 0.5 秒
- modalDuration 控制模态动画想要执行的时间,默认 0.5 秒
添加了一个自定义 NavigationBar 和 一个自定义 TabBar,具体使用方法请参考 Demo
- 其中自定义 TabBar 由于一些特殊需求需要出现子控制器的毛玻璃效果(类似于淘宝的 tabbar),同时如果要修改毛玻璃效果可以尝试修改 lgf_VisualView 这个 view 的背景色透明度,因此子控制器我做了全屏处理,所以子控制器上的 scrollview 需要底部预留 49 的 bottom
- 最好在我自定义的 NavigationBar 上再封装一层,封装时为其添加 tag 值,用于部分全屏菊花加载页面忽视 NavigationBar,这样即使数据加载不出来也可以做一些返回等基本操作,这样可以让添加的代码更简洁易用(参考 Demo)
全局搜索 Demo 里面有一个 333333
- 如果内嵌子控制器上有 scrollview 且为横向滚动,那么请赋值 tag 为 333333,以解决边缘返回手势与 scrollview Pan 手势冲突的问题
如果想要使用本 Demo 之外的自定义跳转
- 请在 VC 初始化的时候给 VC 的 lgf_OtherShowDelegate/lgf_OtherModalDelegate 赋值(你自己定义的跳转代理)