全部产品
云市场

导航栏

更新时间:2019-09-26 18:40:07

  • AUNavigationBar 为 mPaaS 导航栏控件,继承自 AUNavigationBar,并提供了 mPaaS 导航栏的默认样式等。
  • 为方便后续扩展,所有 mPaaS 都必须使用 AUNavigationBar,而不是系统的 UINavigationBar。

效果图

接口说明

  1. /**
  2. mPaaS 导航栏控件(包括 mPaaS 样式等)
  3. 初始化:
  4. UINavigationController *navBar = [[UINavigationController alloc] initWithNavigationBarClass:NSClassFromString(@"AUNavigationBar") toolbarClass:nil];
  5. */
  6. @interface AUNavigationBar : UINavigationBar
  7. @end
  8. /**
  9. UINavigationBar 扩展,定义了 UINavigationBar 的默认样式
  10. */
  11. @interface UINavigationBar (AUNavigationBarExtensions)
  12. /**
  13. * 返回框架导航栏默认 title 颜色,默认为 #000000
  14. *
  15. * @return
  16. */
  17. + (UIColor*)getNavigationBarTitleDefaultColor;
  18. /**
  19. * 返回框架导航栏上 item 颜色,默认为 #108EE9
  20. *
  21. * @return
  22. */
  23. + (UIColor*)getNavigationBarButtonItemDefaultColor;
  24. /**
  25. * 返回框架导航栏颜色,默认为 #fffff
  26. *
  27. * @return
  28. */
  29. + (UIColor*)getNavigationBarDefaultColor;
  30. /**
  31. * 获取导航栏底部横线的颜色,默认为 #e1e1e1
  32. *
  33. * @return
  34. */
  35. + (UIColor*)getNavigationBarBotLineColor;
  36. /**
  37. * 注意:
  38. * 1、基类 DTViewController 在 ViewWillAppear 里设置了导航栏的默认样式;
  39. * 2、业务可以通过系统接口或者下面提供的接口来修改导航栏的样式,一般在 ViewWillAppear 设置;
  40. * 3、如果 VC 是 DTViewController 的子类必须在 ViewWillAppear 里设置,否则会被覆盖;
  41. * 4、保证修改后在 ViewWillDisappear 时通过 setNavigationBarDefaultStyle 恢复默认样式;
  42. * 5、如果 VC 是在 UITabBarController 容器的首页,不要做上面 4 的处理,否则切换 tab 时有覆盖问题。
  43. */
  44. /**
  45. *
  46. * 设置默认的导航栏背景,默认设置背景色 #ffffff,底部横线 #e1e1e1
  47. *
  48. */
  49. - (void)setNavigationBarDefaultStyle;
  50. /**
  51. *
  52. * 设置默认的导航栏标题样式
  53. *
  54. */
  55. - (void)setNavigationBarDefaultTitleTextAttributes;
  56. /**
  57. *
  58. * 设置导航栏标题颜色,请在 ViewWillAppear 里设置,否则会被框架默认颜色覆盖
  59. *
  60. */
  61. - (void)setNavigationBarTitleTextAttributesWithTextColor:(UIColor *)textColor;
  62. /**
  63. *
  64. * 设置导航栏透明样式
  65. * 注意:此方法设置导航栏全透明后,返回的动画过程中会产生闪白问题,目前无解,业务请勿使用。如需使用,请评估影响是否可接受
  66. */
  67. - (void)setNavigationBarTranslucentStyle;
  68. /**
  69. * 指定导航栏颜色,当 translucent 为 Yes 时,有毛玻璃效果
  70. * 注意:调用此接口后,如有需要,请在此方法之后调用设置底部横线的接口,否则底部横线颜色会被默认颜色 #e1e1e1 覆盖
  71. *
  72. * @param color 显示颜色
  73. * @param translucent 是否透明
  74. *
  75. */
  76. - (void)setNavigationBarStyleWithColor:(UIColor *)color translucent:(BOOL)translucent;
  77. /**
  78. * 导航栏下面可能有分割线,导致界面不符合一些UI的要求,使用这个方法设置
  79. * 注意:若自定义了导航栏背景,(包括调用 setNavigationBarStyleWithColor:或重写 opaqueNavigationBarColor)
  80. * 请在修改背景色方法之后调用此接口,否则底部横线颜色会被默认颜色 #e1e1e1 覆盖
  81. */
  82. - (void)setNavigationBarBottomLineColor:(UIColor*)color;
  83. /**
  84. * 业务使用系统方法 setBarTintColor,setBackGroundImage,setBackgroundColor 设置导航栏颜色时,先调用此方法消除默认效果
  85. * 否则默认颜色会与系统设置色叠加产生色差
  86. */
  87. - (void)resetNavigationBarColor;
  88. /**
  89. *
  90. * 屏蔽右滑返回取消时,导航栏闪烁的问题,业务方请勿调用
  91. */
  92. - (void)setNavigationBarMaskLayerWithtColor:(UIColor *)color;
  93. /**
  94. * 返回导航栏当前的背景色
  95. *
  96. * @return 导航栏当前的背景色
  97. */
  98. - (UIColor*)getNavigationBarCurrentColor;
  99. @end

代码示例

  1. // 初始化 UINavigationController
  2. UINavigationController *navBar = [[UINavigationController alloc] initWithNavigationBarClass:NSClassFromString(@"AUNavigationBar") toolbarClass:nil];
  3. // 然后再 VC 中配置导航栏
  4. AUBarButtonItem *cancelItem = [AUBarButtonItem backBarButtonItemWithTitle:@"返回" target:self action:@selector(cancel)];
  5. cancelItem.backButtonTitle = @"取消";
  6. self.navigationItem.leftBarButtonItem = cancelItem;
  7. UIImage *image1 = [AUIconView iconWithName:kICONFONT_MAP width:22 color:AU_COLOR_LINK];
  8. UIImage *image2 = [AUIconView iconWithName:kICONFONT_HELP width:22 color:AU_COLOR_LINK];
  9. AUBarButtonItem *rightItem1 = [[AUBarButtonItem alloc] initWithImage:image1 style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemPressed)];
  10. AUBarButtonItem *rightItem2 = [[AUBarButtonItem alloc] initWithImage:image2 style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemPressed)];
  11. self.navigationItem.rightBarButtonItems = @[rightItem1, rightItem2];