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

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

 [[UINavigationBar appearance] setTranslucent:NO];

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

NavigationBar的translucent属性设置为NO,坐标变化解决_第1张图片
屏幕快照 2016-10-27 下午4.40.31.png

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

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

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

self.extendedLayoutIncludesOpaqueBars = YES;

效果如下

NavigationBar的translucent属性设置为NO,坐标变化解决_第2张图片
屏幕快照 2016-10-27 下午4.48.42.png

你可能感兴趣的:(NavigationBar的translucent属性设置为NO,坐标变化解决)