如何去除tabBar的上横线和navigationBar的下横线

标签: iOS导航条横线navigation隐藏
2016-03-24 10:45  43人阅读  评论(0)  收藏  举报

版权声明:本文为博主原创文章,未经博主允许不得转载。

今天做项目,按照需求,需要作成这个样子。 
 
不显示出navigationBar的那个线。

在介绍navigationBar的那个线之前,我想先说一下tabBar上方的拿刀线。

首先,我们可以打印一下tabBar上的控件们。 
得到以下控件: 
 
我们可以看到里面有一个UIImageView 高度为0.5. 
也就是那个虚线。

所以说,我们想更改tabBar的线,就对这个UIImageView操作。 
代码来了。

<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIView</span> *lineView in <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.tabBarController</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.tabBar</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.subviews</span>){<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> ([lineView isKindOfClass:[<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIImageView</span> class]] && lineView<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.bounds</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.size</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.height</span> <= <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>){<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIImageView</span> *lineImage = (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIImageView</span> *)lineView;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//更改线的颜色</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//lineImage.backgroundColor = [UIColor redColor];</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//隐藏</span>lineImage<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.hidden</span> = <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">YES</span>;}}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li></ul>

接下来,我们继续说一下去除navigationBar的下横线: 
那NavgationBar里面是不是也会有UIImageView呢 
首先我们也打印一下 navigationBar 
我们会发现,里面并没有所谓的UIImageView: 
 
但是如果你用xcode的那个层次结构图,你可以看到 
 
箭头指向的就是那个UIImageView 
所以,我们只需要修改UIImageView的属性,也就可以做到我们想要的了。 
修改NavigationBar的横线有两种办法。 
1.直接修改UIImageView: 
优点:简单粗暴,省代码; 
缺点:navigationBar的半透明效果没了。

<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;">- (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)viewWillAppear:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">BOOL</span>)animated{[<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">super</span> viewWillAppear:animated];[<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.navigationController</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.navigationBar</span> setBackgroundImage:[<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIImage</span> new] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.navigationController</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.navigationBar</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.shadowImage</span> = [<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIImage</span> new];}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul>

2.利用递归拿到子控件中的那个横线子控件, 
利用ViewController的生命周期,在ViewDidLoad中拿到横线line, 
在ViewWillAppear中隐藏。 
优点:navigationBar的半透明效果存在 
缺点:代码稍微复杂一点点。

<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">@interface</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">ZDProfileController</span> ()</span>
{<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIImageView</span> * line ;
}- (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)viewDidLoad {[<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">super</span> viewDidLoad];<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.view</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.backgroundColor</span> = ZDColor_White;line = <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>;line = [<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span> navigationBarLine:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.navigationController</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.navigationBar</span>];
}- (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIImageView</span> *)navigationBarLine:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIView</span> *)view{<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 符合条件返回控件</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> ([view isKindOfClass:<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIImageView</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.class</span>] && view<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.bounds</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.size</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.height</span> <= <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span>) {<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIImageView</span> *)view;}<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 递归查找</span><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIView</span> *subview in view<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.subviews</span>) {<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIImageView</span> *imageView = [<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">self</span> navigationBarLine:subview];<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (imageView) {<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> imageView;}}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">nil</span>;
}
- (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>)viewWillAppear:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">BOOL</span>)animated{[<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">super</span> viewWillAppear:animated];line<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.hidden</span> = <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">YES</span>;
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li></ul>

以上就是,去除tabBar的上横线和navigationBar的下横线的方法。 
如果确实帮助到您,请给顶一下。 
有不懂的欢迎留言。

如何去除tabBar的上横线和navigationBar的下横线相关推荐

  1. 去除tabBar的上横线和navigationBar的下横线方法介绍

    去除tabBar的上横线和navigationBar的下横线方法介绍 2016-03-25       0 个评论    来源:qq_33777090的博客   收藏     我要投稿 如何去除tab ...

  2. [react] 在React中如果去除生产环境上的sourcemap?

    [react] 在React中如果去除生产环境上的sourcemap? GENERATE_SOURCEMAP=false react-scripts build If you use the Crea ...

  3. 怎么用计算机批改试卷,试卷弄横线_在电脑上出试卷时答题的横线怎么打_淘题吧...

    ⑴ 老师改完试卷为什么要在分数下面画横线 学生时代过来的我们大概最熟悉的就是试卷了,中国的孩子都是在试卷里打天下的,可是你有没有注意过老师在试卷的分数底下都要画两条横线,你想知道这是什么原因吗? 出现 ...

  4. iphone标记无法储存更改_技巧 | 教你去除iPhone设置上烦人的“1”

    原标题:技巧 | 教你去除iPhone设置上烦人的"1" 苹果最近向iPhone用户推送了iOS 9.3.3的更新,但是总有人因为各种原因不愿意更新的系统,这时候,在设置图标的右上 ...

  5. 如何去除已卸载程序在 “选择在任务栏上显示哪些图标“ 选项下的显示

    本篇解决的问题内容为: 如何去除已卸载程序在 "选择在任务栏上显示哪些图标" 选项下的显示 (前情提要: 前些日子下了个罗技外设专用的GHUB,发现想下的东西不是这个就用Geek ...

  6. android 7.0平台客制化虚拟导航按键(隐藏NavigationBar,上滑显示NavigationBar)

    如图,需求是增加一个按钮可以隐藏NavigationBar,上滑显示NavigationBar. 参考文章: Android 8.1平台客制化虚拟导航按键 Android 7.0 虚拟按键(Navig ...

  7. 怎样去除从网页上复制到WORD文档中的下箭头?

    怎样去除从网页上复制到WORD文档中的下箭头? 将^l全部替换为^p即可.

  8. router-link标签去除下横线

    在使用vue的路由使用router-link标签的时候包裹的子元素文本发现都有下横线 对a标签进行text-decoration: none;发现无效 最后发现是激活状态的样式没有更改 加上以下css ...

  9. vue中如何加入横线_在word文档中如何快速添加页眉横线和删除页眉横线?

    你还在烦恼怎么给word文档页眉添加横线和删除页眉横线吗?不用烦恼!今天小白就教您快速添加页眉横线和快速删除页眉横线的方法.赶快一起来学习一下!在word文档中如何快速添加页眉横线 1.打开word文 ...

最新文章

  1. ipmi重启_重启ipmi服务器
  2. Linux中修改weblogic默认IP,Weblogic 12c ip 地址改变如何配置
  3. python递归函数的思想_Python递归函数实例讲解
  4. 苹果今年将为iPhone采购1.72亿块OLED屏幕 六成用于iPhone 13
  5. Linux系统编程二:字符设备控制之点亮LED灯、控制蜂鸣器
  6. 利用Jenkins+Phantomas进行前端性能自动化测试
  7. python记录鼠标和键盘操作并重复_鼠标和键盘操作
  8. 呜呜。平安夜没有苹果
  9. 王者荣耀官网全皮肤超超超清原皮爬取!!!
  10. vivado实现FFT和IFFT信号处理
  11. android 程序崩溃处理,Android应用崩溃的应急处理
  12. tiny linux u盘_多系统U盘启动盘制作工具(YUMI)下载-多系统U盘启动盘制作工具(YUMI)PC版下载v2.0.7.6...
  13. 面对互联网裁员潮,我们该怎么提升自己核心知识能力
  14. HTML的两种盒子模型
  15. 吞噬星空鸿蒙殿主,论《吞噬星空》是鸿蒙三部曲的最后一部!
  16. 无限循环小数展示算法题
  17. 映美Jolimark 24针打印机驱动
  18. 荣耀手表显示无法连接服务器,荣耀手表S1配对失败该怎么分析原因并解决?
  19. 快速从萌新变成老手!教你使用ThingJS的小技巧!
  20. 几个Linux实用快捷键分享

热门文章

  1. GORM 连接 ORACLE
  2. 微信公众号接入(参考微信开放文档记笔记)
  3. SD-WAN设备白盒刷机
  4. 微星发布Infinite X Plus主机 搭载i9+2080 Ti
  5. LaTex书写日文教程 / upLaTex、pLaTex的使用 / latex配置日语编译环境方法
  6. RabbitMQ延迟消息:死信队列 | 延迟插件 | 二合一用法+踩坑手记+最佳使用心得
  7. 程序员专用表情包_拿走不谢!
  8. 两种深度强化学习算法在网络调度上的应用与优化(DQN A3C)
  9. 冒泡排序+怎么计算时间复杂度
  10. 初中毕业能学什么计算机职业学校,初中毕业可以读计算机专业吗?