iOS怎么去掉导航栏下方的横线

  介绍

这篇文章主要介绍了iOS怎么去掉导航栏下方的横线,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

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

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

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

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

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

 iOS怎么去掉导航栏下方的横线”> <br/> </p> <p> <img src=

树形结构如下

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

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

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

NSArray  * allSubviews (UIView  *一览),{   ,NSArray  * results =, (aView 子视图);   ,for  (UIView  * eachView  aView.subviews拷贝)   ,{   ,,NSArray  * subviews =, allSubviews (eachView);   ,,if (子视图)   ,,,,results =, (results  arrayByAddingObjectsFromArray:子视图);   ,}   ,return 结果;   }

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

@property (原子,,强烈),UIImageView  * shadowImage; 安康;(空白)那些:动画(BOOL) {   ,,(super 那些:动画);   NSArray 才能;* subViews =, allSubviews (self.navigationController.navigationBar);   for 才能;(UIView  * view 拷贝子视图),{   ,,,if  ([view  isKindOfClass: [UIImageView 类]],,,,view.bounds.size.height<1) {   ,,,,//实践后发现系统的横线高度为0.333   ,,,,,self.shadowImage =, (UIImageView  *);   ,,,}   ,,}   时间=self.shadowImage.hidden 才能;是的;   }

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

安康;(void) viewWillDisappear:动画(BOOL) {   ,,(super  viewWillDisappear:动画);   self.shadowImage.hidden 才能,=,没有;   }

运行后发现完美解决

 iOS怎么去掉导航栏下方的横线

感谢你能够认真阅读完这篇文章,希望小编分享的“iOS怎么去掉导航栏下方的横线”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

iOS怎么去掉导航栏下方的横线