第一步,隐藏导航栏底部的分割线

如何隐藏导航栏底部的分割线(shadow image/ hairline)?

    navigationBar.clipsToBounds = YES;    //隐藏
navigationBar.clipsToBounds = NO; //显示

因为分割线是显示在导航栏外部的,已经超过了导航栏的高度,通过 [UIView setClipsToBounds:bool] 决定是否显示 View frame 之外的部分。

也可以根据这个分割线的特性获取 Ta 这个 View,然后通过 [UIView setHidden:hidden] 方法控制是否需要显示。

首先,Ta 是个一个 UIImageView, 并且 Ta 的 height 不大于 1:

- (UIImageView *)findHairlineFromView:(UIView *)view
{
if ([view isKindOfClass:[UIImageView class]] && view.frame.size.height <= 1.0) {
return (UIImageView *)view;
} for (UIView *subView in view.subviews) {
UIImageView *imageView = [self findHairlineFromView:subView];
if (imageView) {
return imageView;
}
} return nil;
}
//在 viewDidLoad 方法中获取 hairline
hairlineView = [self findHairlineFromView:self.navigationController.navigationBar]; //在 viewWillAppear:
[hairlineView setHidden:YES]; //在 viewWillDisappear:
[hairlineView setHidden:NO];

第二部,增加导航栏的“高度”

如果注意观察 apple 的官方应用,如 “日历” 或 “App Store”,会发现这其实不是一个导航栏 (NavigationBar),而是自定义的导航栏恰好顶在系统的导航栏下面,看起来好像一个。实际上是两个导航栏的合体。

如果只是改变系统导航栏的 Frame,会发现导航栏上 UIBarButtonItem 和 Title 始终都会挨着导航栏的下沿。所以,就考虑通过上面的方法实现。

先初始化一个自定义导航栏:

self.customNavigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(, , self.view.bounds.size.width, )];
self.customNavigationBar.delegate = self;
[self.view addSubview:self.customNavigationBar];

实现 <UINavigationBarDelegate> 中的方法

- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar
{
return UIBarPositionTopAttached;
}

效果:

链接:http://stackoverflow.com/a/21999916

最新文章

  1. python 异常处理学习笔记
  2. node.js 基础学习笔记2
  3. ZOJ 3157 Weapon
  4. C++和pascal之间的通信
  5. android生成验证码bitmap
  6. RejexLib
  7. GCD其他实用场景
  8. MountService初探
  9. 数据库并行读取和写入(Python实现)
  10. 大数据(1):基于sogou.500w.utf8数据的MapReduce程序设计
  11. PAT1032: Sharing (25)
  12. Hankson 的趣味题
  13. spring boot + dubbo开发遇到过的异常
  14. 【iCore4 双核心板_ARM】例程十五:USB_CDC实验——高速数据传输
  15. git 提交去除每次输账号密码
  16. 推荐:Java性能优化系列集锦
  17. 如何在Twitter开发者平台上注册自己的应用
  18. 【OCP 12c】最新CUUG OCP-071考试题库(61题)
  19. HCNP - Server
  20. linux开发node相关的工具

热门文章

  1. LeetCode: Jump Game Total 解题报告
  2. Mysql下SELECT的结果集作为UPDATE的WHERE条件时的SQL语法
  3. MySQL 中联合查询效率分析
  4. iosg给父类view添加透明度子类也变得透明
  5. [Python] 探索性编程与idleX
  6. java进程的守护进程脚本
  7. Centos7.3防火墙配置
  8. XXXXX
  9. JS 二维数组排序
  10. Qt封装QTcpServer参考资料--QTcpServer多线程实现