本文提供导航栏组件的预览效果及其代码示例。
AUNavigationBar 为 mPaaS 导航栏控件,并提供了 mPaaS 导航栏的默认样式等。
为方便后续扩展,所有 mPaaS 应用都必须使用 AUNavigationBar,而不是系统的 UINavigationBar。
效果图
接口说明
/**
mPaaS 导航栏控件(包括 mPaaS 样式等)
初始化:
UINavigationController *navBar = [[UINavigationController alloc] initWithNavigationBarClass:NSClassFromString(@"AUNavigationBar") toolbarClass:nil];
*/
@interface AUNavigationBar : UINavigationBar
@end
/**
UINavigationBar 扩展,定义了 UINavigationBar 的默认样式
*/
@interface UINavigationBar (AUNavigationBarExtensions)
/**
* 返回框架导航栏默认 title 颜色,默认为 #000000
*
* @return
*/
+ (UIColor*)getNavigationBarTitleDefaultColor;
/**
* 返回框架导航栏上 item 颜色,默认为 #108EE9
*
* @return
*/
+ (UIColor*)getNavigationBarButtonItemDefaultColor;
/**
* 返回框架导航栏颜色,默认为 #fffff
*
* @return
*/
+ (UIColor*)getNavigationBarDefaultColor;
/**
* 获取导航栏底部横线的颜色,默认为 #e1e1e1
*
* @return
*/
+ (UIColor*)getNavigationBarBotLineColor;
/**
* 注意:
* 1、基类 DTViewController 在 ViewWillAppear 里设置了导航栏的默认样式;
* 2、业务可以通过系统接口或者下面提供的接口来修改导航栏的样式,一般在 ViewWillAppear 设置;
* 3、如果 VC 是 DTViewController 的子类必须在 ViewWillAppear 里设置,否则会被覆盖;
* 4、保证修改后在 ViewWillDisappear 时通过 setNavigationBarDefaultStyle 恢复默认样式;
* 5、如果 VC 是在 UITabBarController 容器的首页,不要做上面第 4 步的处理,否则切换 tab 时有覆盖问题。
*/
/**
*
* 设置默认的导航栏背景,默认设置背景色 #ffffff,底部横线 #e1e1e1
*
*/
- (void)setNavigationBarDefaultStyle;
/**
*
* 设置默认的导航栏标题样式
*
*/
- (void)setNavigationBarDefaultTitleTextAttributes;
/**
*
* 设置导航栏标题颜色,请在 ViewWillAppear 里设置,否则会被框架默认颜色覆盖
*
*/
- (void)setNavigationBarTitleTextAttributesWithTextColor:(UIColor *)textColor;
/**
*
* 设置导航栏透明样式
* 注意:此方法设置导航栏全透明后,返回的动画过程中会产生闪白问题,目前无解,业务请勿使用。如需使用,请评估影响是否可接受
*/
- (void)setNavigationBarTranslucentStyle;
/**
* 指定导航栏颜色,当 translucent 为 Yes 时,有毛玻璃效果
* 注意:调用此接口后,如有需要,请在此方法之后调用设置底部横线的接口,否则底部横线颜色会被默认颜色 #e1e1e1 覆盖
*
* @param color 显示颜色
* @param translucent 是否透明
*
*/
- (void)setNavigationBarStyleWithColor:(UIColor *)color translucent:(BOOL)translucent;
/**
* 导航栏下面可能有分割线,导致界面不符合一些UI的要求,使用这个方法设置
* 注意:若自定义了导航栏背景,(包括调用 setNavigationBarStyleWithColor:或重写 opaqueNavigationBarColor)
* 请在修改背景色方法之后调用此接口,否则底部横线颜色会被默认颜色 #e1e1e1 覆盖
*/
- (void)setNavigationBarBottomLineColor:(UIColor*)color;
/**
* 业务使用系统方法 setBarTintColor,setBackGroundImage,setBackgroundColor 设置导航栏颜色时,先调用此方法消除默认效果
* 否则默认颜色会与系统设置色叠加产生色差
*/
- (void)resetNavigationBarColor;
/**
*
* 屏蔽右滑返回取消时,导航栏闪烁的问题,业务方请勿调用
*/
- (void)setNavigationBarMaskLayerWithtColor:(UIColor *)color;
/**
* 返回导航栏当前的背景色
*
* @return 导航栏当前的背景色
*/
- (UIColor*)getNavigationBarCurrentColor;
@end
代码示例
// 初始化 UINavigationController
UINavigationController *navBar = [[UINavigationController alloc] initWithNavigationBarClass:NSClassFromString(@"AUNavigationBar") toolbarClass:nil];
// 然后再 VC 中配置导航栏
AUBarButtonItem *cancelItem = [AUBarButtonItem backBarButtonItemWithTitle:@"返回" target:self action:@selector(cancel)];
cancelItem.backButtonTitle = @"取消";
self.navigationItem.leftBarButtonItem = cancelItem;
UIImage *image1 = [AUIconView iconWithName:kICONFONT_MAP width:22 color:AU_COLOR_LINK];
UIImage *image2 = [AUIconView iconWithName:kICONFONT_HELP width:22 color:AU_COLOR_LINK];
AUBarButtonItem *rightItem1 = [[AUBarButtonItem alloc] initWithImage:image1 style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemPressed)];
AUBarButtonItem *rightItem2 = [[AUBarButtonItem alloc] initWithImage:image2 style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemPressed)];
self.navigationItem.rightBarButtonItems = @[rightItem1, rightItem2];
文档内容是否对您有帮助?