iOS剖析UINavigationController(三)毛玻

2017-05-26  本文已影响151人  举个栗子wow

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个高度,这样一来我们的布局就正常了。

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

上一篇 下一篇

猜你喜欢

热点阅读