iOS剖析UINavigationController(三)毛玻璃

iOS7扁平化的设计推出了导航栏自带“毛玻璃”模糊的效果,看起来确实比之前的好看了很多。由于毛玻璃带来的特殊效果会使得你之前的布局有所打乱,像如下这样的代码:

21CC35BA-5527-4B4B-AD4B-83A9E179CB89.png

我们创建一个view放置在控制器的view上,我们想要的效果应该是红色view紧贴着导航栏,但实际上并不是,实际的效果如下:

737D3401-3E4B-4C6F-8AC3-1B4852179AF7.png

红色的view从最顶部开始布局了,这并不是我们想要的,我们是想他从导航栏下面开始布局。这里需要注意并不是我们红色的view布局有问题而是底部的控制器的view布局产生了偏差。我们打开层级看一下:

1DA3DECF-6E99-4104-AB8D-50E753965B24.png

可以看到我们控制器的view就是从最顶部开始布局的,并没有因为导航栏的存在而下移。对这一点来说我个人觉得原因如下:

毛玻璃虽然产生了半透明的效果,但并没有完全遮挡后面的内容,所以官方可能觉得并不需要下移你的view因为并未完全遮挡到。

但我们的布局会受到毛玻璃的影响,你需要让你控制器的view下调64个高度以适应这个影响。

如果你觉得毛玻璃这个效果并没有什么用反而会影响你原来的布局,那么就手动关闭它。

self.navigationController.navigationBar.translucent = NO;

我们来看下关闭后的效果:

75DE44AA-DAA7-49B6-961F-2068EACD92A3.png
0D5A2085-FB81-42A8-830D-3DB3A36DFC5A.png

我们可以看到控制器的view自动下调了64个高度,这样一来我们的布局就正常了。

一般来说出于习惯我们都会把毛玻璃效果关闭,符合平时的习惯而且自己也可以去做一些特殊的效果,这个在第四篇细说。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容