首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
移动开发
> 详细
一些关于iOS系统导航栏与自定义导航栏的事情
时间:
2016-08-10 14:21:16
阅读:
282
评论:
0
收藏:
0
[点我收藏+]
标签:
关于系统导航栏是真的让人又爱又恨,爱的是苹果本身对这个控件的封装已经是很完美了,包括内存、美化、渐变动画等等,一般来说,基本上所有需求都可以满足的。但是你要知道什么东西到了中国,就会发生翻天覆地的变化,例如后台的数据并发。在国内奇葩的产品设计之下,导航栏也是面目全非,反正我看了比较著名的APP,发现他们的导航栏基本都是自定义,其中牵扯最大的问题就是导航栏自身的隐藏、颜色渐变。
其实通过APP运行时,你可以看到系统NavigationBar的分层。一个navigationBar是分很多层的,并非我们看到的最外层,它里面有控制颜色的层,有放置控件的navigationItem层等等,有兴趣的可以通过xcode的Debug Navigator--->View UI Hierarchy,类似于Reveal这个工具。
系统的导航栏不多说,因为当你用到自定义导航栏时,基本上就是你们产品的需求,系统的导航栏已经满足不了,或者说满足起来极其麻烦。我前段时间也是遇到一个这样纠结的产品需求,首页导航栏隐藏,后面界面有些隐藏,有些不隐藏,这时为了防止Push/POP滑动动画时导航栏产生黑条,需要进行一系列的设置,极其麻烦。至于为什么会这样,在这解释下,因为当你设置了navigationController之后,在这个栈中是始终只存在一个navigationController的。同时,navigationBar也是始终只有一个,但是为什么每个界面的导航栏可以放置不同的控件呢?那是因为放置控件的navigationItem是每个界面都会初始化的,再次赞美下苹果工程师的机智,但这样就会导致一个问题,不同界面的生命周期会在ViewWillAppear和ViewWillDisappear中产生交汇,这时系统的navigationBar就会受到影响。这就是为什么你在设置不同控件时,系统navigationBar看起来是正常的,但是你一动navigationBar的透明度、颜色就会出来各种问题的原因。
基于上面那个原因,我自定义了navigationBar和navigationItem。刚开始,我将自定义的naviBar和naviItem放置在UINavigationController的category中,后来我发现因为系统的navigationController在一个栈中,是只初始化一次的,这导致每次Push之后的界面的naviBar将会覆盖上一个界面的,导致在返回以后无法再对上一个界面的naviBar进行操作,我想性系统可能是通过某种方式记录了,但我还不太清楚。所以我只能退而求其次将其放置在了UIViewController的category中,这样算是完美解决了这些问题。
项目下载地址
https://github.com/jizhidejingmo/YYNavigationBar
一些关于iOS系统导航栏与自定义导航栏的事情
标签:
原文地址:http://www.cnblogs.com/jingmo/p/5756333.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
关闭苹果IOS app自动更新
2021-07-29
开发一个即时通讯App
2021-07-28
iOS 跳转App Store进行评分
2021-07-26
诺基亚短信生成!太好玩了
2021-07-26
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
2021-07-26
Android系统编程入门系列之界面Activity响应丝滑的传统动画
2021-07-26
uniapp h5,app两端复制文本
2021-07-22
uni-app滚动视图容器(scroll-view)之监听上拉事件
2021-07-21
新型横向移动工具原理分析、代码分析、优缺点以及检测方案
2021-07-19
Android系统编程入门系列之界面Activity交互响应
2021-07-19
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!