DoubleNavigationController
简介
众所周知,UINavigationController
是一个容器视图控制器,它可以管理一个或多个导航界面中的子视图控制器。有时,我们只想更新当前视图控制器的外观,而不是影响整个应用。DoubleNavigationController 是一个库,可以解决上述问题。
架构
我们可以将 UINavigationController
视为一个树,每个节点是一个由其管理的 ViewController。通过使用 DoubleNavigationController,我们可以更新当前节点导航栏的外观,而不会影响其父节点。但是,其子节点的导航栏将受到影响。这种关系可以用下面的图片来描述。
示例
要运行示例项目,请克隆仓库,然后首先从示例目录运行 pod install
用法
您可以通过在 ViewVontroller 中实现 dbn_configNavigationController:
来自定义导航。
- (void)dbn_configNavigationController:(UINavigationController *)navigationController {
[navigationController setNavigationBarHidden:NO animated:NO];
navigationController.navigationBar.barTintColor = [UIColor whiteColor];
navigationController.navigationBar.tintColor = [UIColor purpleColor];
navigationController.navigationBar.titleTextAttributes = @{NSFontAttributeName: [UIFont systemFontOfSize:20], NSForegroundColorAttributeName: [UIColor redColor]};
}
- (void)dbn_configNavigationItem:(UINavigationItem *)navigationItem {
UIBarButtonItem *btnItem = [[UIBarButtonItem alloc] initWithTitle:@"Next" style:UIBarButtonItemStylePlain target:self action:@selector(eventFromButton:)];
navigationItem.rightBarButtonItem = btnItem;
navigationItem.title = @"Hello";
}
您还可以通过使用 dbn_performBatchUpdates:
在 UIViewController
类别中对导航的外观进行更新。
[self dbn_performBatchUpdates:^(UINavigationController * _Nullable navigationController) {
if (navigationController) {
navigationController.navigationBar.tintColor = [UIColor purpleColor];
}
}];
安装
DoubleNavigationController 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
target 'TargetName' do
pod 'DoubleNavigationController'
end
许可
DoubleNavigationController 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。