全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

iOS如何去掉导航栏(UINavigationBar)下方的横线

网上有很多关于隐藏的方法,设置后能够成功,但是跳转到其他界面的时候发现,其他界面横线也被隐藏了。

目前主流的方法是将shadowImage用一张空的图片图片替换掉

可是这种方法不能解决navigationController里面的某个界面隐藏,其他不变的问题。

[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init];

通过xcode查看UINavigationBar的树形结构发现,可以很清楚的看出横线就是下面的_UIBarBackground下面的UIImageView对象


树形结构如下

**UINavigationBar**
**--[ 1] _UIBarBackground**
**----[ 2] UIImageView**
**----[ 2] UIVisualEffectView**
**------[ 3] _UIVisualEffectBackdropView**
**------[ 3] _UIVisualEffectFilterView**
**--[ 1] UINavigationButton**
**----[ 2] UIButtonLabel**
**--[ 1] _UINavigationBarBackIndicatorView**

所以能不能遍历UINavigationBar的所有子view然后找到横线对应的UIImageView对象,隐藏掉呢?

遍历UINavigationBar所有的子view获取子view的数组。

NSArray *allSubviews(UIView *aView) {
 NSArray *results = [aView subviews];
 for (UIView *eachView in aView.subviews)
 {
   NSArray *subviews = allSubviews(eachView);
   if (subviews)
     results = [results arrayByAddingObjectsFromArray:subviews];
 }
 return results;
}

遍历数组找到横线对应的UIImageView对象

@property (nonatomic, strong) UIImageView *shadowImage;
- (void)viewWillAppear:(BOOL)animated{
  [super viewWillAppear:animated];
  NSArray *subViews = allSubviews(self.navigationController.navigationBar);
  for (UIView *view in subViews) {
    if ([view isKindOfClass:[UIImageView class]] && view.bounds.size.height<1){
     //实践后发现系统的横线高度为0.333
      self.shadowImage = (UIImageView *)view;
    }
  }
  self.shadowImage.hidden = YES;
}

最后在viewDidDisappear方法里面还原显示状态。

- (void)viewWillDisappear:(BOOL)animated{
  [super viewWillDisappear:animated];
  self.shadowImage.hidden = NO;
}

运行后发现完美解决

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ios  # 导航栏去掉线  # ios去掉导航栏的线  # 导航栏底部横线  # iOS 封装导航栏及返回  # 获取控件所在控制器的实例  # 简单好用的iOS导航栏封装.runtime属性控制实例代码  # 关于iOS导航栏返回按钮问题的解决方法  # iOS实现顶部标签式导航栏及下拉分类菜单  # IOS仿今日头条滑动导航栏  # 详解iOS11关于导航栏问题  # iOS应用开发中导航栏按钮UIBarButtonItem的添加教程  # iOS定制UISearchBar导航栏同步iOS11的方法  # iOS界面跳转时导航栏和tabBar的隐藏与显示功能  # iOS导航栏控制的一些总结  # 遍历  # 有很多  # 很清楚  # 大家多多  # 跳转到  # 这种方法  # 网上  # UINavigationBar  # viewDidDisappear  # xcode  # init  # forBarMetrics  # UIBarMetricsDefault  # _UIBarBackground  # _UIVisualEffectBackdropView  # _UIVisualEffectFilterView  # UINavigationButton  # UIImageView  # plain  # UIVisualEffectView 


相关文章: 建站之星如何防范黑客攻击与数据泄露?  音响网站制作视频教程,隆霸音响官方网站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  在线教育网站制作平台,山西立德教育官网?  Android使用GridView实现日历的简单功能  小程序网站制作需要准备什么资料,如何制作小程序?  Java解压缩zip - 解压缩多个文件或文件夹实例  想学网站制作怎么学,建立一个网站要花费多少?  如何在IIS中新建站点并配置端口与物理路径?  网站设计制作企业有哪些,抖音官网主页怎么设置?  PHP 500报错的快速解决方法  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  ,巨量百应是干嘛的?  如何快速选择适合个人网站的云服务器配置?  如何在万网ECS上快速搭建专属网站?  建站为何优先选择香港服务器?  手机网站制作与建设方案,手机网站如何建设?  建站之星2.7模板快速切换与批量管理功能操作指南  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  如何通过网站建站时间优化SEO与用户体验?  如何通过西部建站助手安装IIS服务器?  定制建站流程解析:需求评估与SEO优化功能开发指南  免费网站制作appp,免费制作app哪个平台好?  如何快速重置建站主机并恢复默认配置?  全景视频制作网站有哪些,全景图怎么做成网页?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  专业网站建设制作报价,网页设计制作要考什么证?  潮流网站制作头像软件下载,适合母子的网名有哪些?  制作网站的公司有哪些,做一个公司网站要多少钱?  微信h5制作网站有哪些,免费微信H5页面制作工具?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  官网网站制作腾讯审核要多久,联想路由器newifi官网  定制建站如何定义?其核心优势是什么?  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  制作表格网站有哪些,线上表格怎么弄?  如何在Golang中使用replace替换模块_指定本地或远程路径  深圳网站制作培训,深圳哪些招聘网站比较好?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何零基础在云服务器搭建WordPress站点?  如何快速上传建站程序避免常见错误?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  浅谈Javascript中的Label语句  网站制作话术技巧,网站推广做的好怎么话术?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  c# 服务器GC和工作站GC的区别和设置  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  广州营销型建站服务商推荐:技术优势与SEO优化解析  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。