不做gif了,虽然我会做^ ^,具体情况你遇到了就知道我说的是什么,没遇到这篇文章对你也没有价值。
具体来说就是,我APP中根视图导航栏是透明的,二级页面导航栏是不透明的,在页面切换的时候会看到黑块,这个在加入了手势后更加明显,总之就是页面切换不平滑,这让有强迫症的我怎么看的舒服。
之前一直没有很好的解决办法,后来在看到《一个丝滑的全屏滑动返回手势》后,里面一句话提醒了我,是讲手机QQ的页面切换的,“它的个人中心页面上面的 bar 是隐藏状态,然后做了个和其他页面很像的假 bar,但返回手势一开始就露馅了,为了弥补,还做了下后面真 bar 的 alpha 值动画,两个返回按钮还是重叠在了一起。”,于是,就有思路了,我在页面出现的时候隐藏真正的NavigationBar,让自己添加的假的NavigationBar占坑,并配置透明,页面结束的时候,设置真的NavigationBar显示,这样不影响二级页面导航栏的显示,几处代码贴下
@property (weak, nonatomic) IBOutlet UINavigationBar *customNavigationBar;
- (void)initCustomNavigationBar {
self.customNavigationBar.translucent = YES;
//去掉背景图片
[self.customNavigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
//去掉底部线条
[self.customNavigationBar setShadowImage:[[UIImage alloc] init]];
//调整偏移inset,使得图片能从屏幕顶部开始显示,显示在导航栏下面
self.automaticallyAdjustsScrollViewInsets = NO;
}
//对导航栏隐藏的设置,避免子页面缺失
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:animated];
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:animated];
}
大概就是这个样子,真正是困扰自己很久了,这个问题
当然我也使用了文章作者的FDFullscreenPopGesture,这样在每个界面都有了右滑返回的手势,不用自己添加了,听说是用了AOP,这个我不太懂,找时间看下,反正添加两个文件后就自带了手势(听说用了私有API,到时候注意下)。
参考资料:
1.一个丝滑的全屏滑动返回手势:http://blog.sunnyxx.com/2015/06/07/fullscreen-pop-gesture/