自定义导航栏样式,效果。
很多时候,我们的App需要其他不同效果的导航栏,不再是简单的用系统的。比如 一些需要透明的,页面滚动之后再显示出来,而且显示的效果还有多种。 还有些App的导航栏是多种颜色的变化,不再是统一风格的。 下面将附上一些关键类及代码, 最后附上Demo,积分不够的私我~~
Demo中,关键类及一些依赖。
关键类:
说明:
WBBaseVC 是基类, WB
TranslucentNavigationBarVC 是透明基类, WBOpaqueNavigationBarVC 是不透明基类。
在AppDelegate的
didFinishLaunchingWithOptions 里设置全局统一的样式, 调用 [self setupAppearance];
#pragma mark - UIAppearance
- (void)setupAppearance {
- (void)setupAppearance {
[[UITableView appearance] setSeparatorColor:COMMON_SEPARATOR_COLOR];
[[UINavigationBar appearance] setBarTintColor:COMMON_MAIN_COLOR];
[[UINavigationBar appearance] setTintColor:COMMON_WHITE_COLOR];
[[UINavigationBar appearance] setTitleTextAttributes:@{
NSForegroundColorAttributeName : COMMON_WHITE_COLOR
}];
}
设置之后, 之后创建的所有
UIViewController
只需要继承与 WBTranslucentNavigationBarVC 或者 WBOpaqueNavigationBarVC。
如果继承于 WBTranslucentNavigationBarVC, 导航栏将透明,继承于 WBOpaqueNavigationBarVC,导航栏将是全局统一的样色 (就是setupAppearance方法里的)。
接口说明:
和使用系统的
UINavigationBar
一样,可以设置title,leftBarButton ,rightBarButton,也可以自定义TitleView。
改变导航栏样式,在适当的时机,调用
setupBarViewBackColor 或者
setupBarViewBackColor:
alpha: 可以有不同的效果,具体Demo。
以及提供了可读的
navigationBar 属性。
效果:
![](https://img-my.csdn.net/uploads/201607/22/1469161390_2533.gif)