iOS一行代码实现简单优雅的隐藏导航栏

代码很简单,只需写一个继承UIViewController的基类BasisController

BasisController.h

#import <UIKit/UIKit.h>
@interface BasisController : UIViewController
///是否隐藏导航栏
@property (nonatomic, assign) BOOL hideNavBar;
@end

BasisController.m

#import "BasisViewController.h"
@interface BasisController () 
@end

@implementation BasisController 

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:self.hideNavBar animated:animated];
}

@end

需要隐藏导航栏的VC继承BasisController,然后设置self.hideNavBar = YES就可以了,这种方法只对当前页面生效,不会影响到后面的页面,并且在切换tabbar、滑动返回、push、present时导航栏不会有任何的闪烁、跳动等异常动画

这种方法需要所有想要隐藏导航栏的VC都继承这个基类,对项目有一定的侵入性。如果想要无侵入性的方式,可以给UIViewController写个分类,使用runtime生成hideNavBar属性和交换viewWillAppear方法来实现。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容