现在越来越多UI都会有隐藏导航栏的需求,像鹅厂的这种:
大部分的解决方案就是官方的那种:
[[UINavigationBar appearance] setShadowImage:[UIImage new]];
一劳永逸,但是有个问题,这样写了之后,想要恢复很麻烦,搜罗了一下解决方案,集百家之长,总结一下。
@property (weak, nonatomic) UIView * navLine;
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]){
NSArray *list=self.navigationController.navigationBar.subviews;
for (id obj in list) {
if ([obj isKindOfClass:[UIView class]]) {
UIImageView *imageView=(UIImageView *)obj;
NSArray *list2 = imageView.subviews;
for (id obj2 in list2) {
if ([obj2 isKindOfClass:[UIImageView class]]) {
if (CGRectGetHeight([obj2 frame]) == 0.5) {
_navLine = (UIImageView *)obj2;
}
}
}
}
}
}
[_navLine setHidden:YES];
NSLog(@"_navLine---%@",_navLine);
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[_navLine setHidden:NO];
}
done!但是有个小小的问题,就是跳转的时候分割线的出现有点跳戏,这个还没有什么好办法解决,如果道友有好的解决方案,请告知一下,多谢!
收工,继续搬砖。