美文网首页
iOS剖析UINavigationController(三)毛玻

iOS剖析UINavigationController(三)毛玻

作者: 举个栗子wow | 来源:发表于2017-05-26 16:46 被阅读151次

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

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

    相关文章

      网友评论

          本文标题:iOS剖析UINavigationController(三)毛玻

          本文链接:https://www.haomeiwen.com/subject/zwtixxtx.html