NavigationBar的translucent属性设置为NO,坐标变化解决

项目进行到一定程度了,需求要将NavigationBar的颜色改成与下方view的颜色相同,大家也都知道,同一个颜色值,NavigationBar显示和普通view显示出来的效果是不一样的,这与NavigationBar的translucent属性有关,iOS7后默认为YES。
若想要显示效果一样,就需要设置translucent为NO。

 [[UINavigationBar appearance] setTranslucent:NO];

当以为成功的时候,尴尬的发现,不仅坐标变化,之前写的控件下移64,还有一条难看的黑线,(下图仅显示坐标变化)

屏幕快照 2016-10-27 下午4.40.31.png

解决黑线问题可添加如下代码

[[UINavigationBar appearance] setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[UIImage new]];

坐标问题总不能每一个控件全都改坐标吧,网上找了好一会,可以一句话完美解决,不用修改任何坐标

self.extendedLayoutIncludesOpaqueBars = YES;

效果如下

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,917评论 25 709
  • 总所周知,苹果从iOS7开始采用扁平化的界面风格,颠覆了果粉们“迷恋”的拟物化风格。对于开发者而言,全新的风格带来...
    聪明的笨白阅读 3,532评论 8 40
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • 一摔,二踩,三扔,一部品相不错的手机经过一连串麻利的动作之后安安静静地躺在水中寿终正寝了。身为老师当作全班同学的面...
    杏坛耕夫阅读 286评论 0 1
  • 有一点需要声明,我不是不自信,而是不喜欢你的态度发生改变,无论是精神上的还是行动上的!因为很多人都说男生会一点...
    喵了个咪的莹莹莹阅读 193评论 0 0