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

2021-04-13  本文已影响0人  Aexsi

代码很简单,只需写一个继承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方法来实现。
上一篇 下一篇

猜你喜欢

热点阅读