无法使用MapView更改导航栏色调iOS7

时间:2013-10-01 01:51:53

标签: objective-c colors mkmapview uinavigationbar ios7

是否有人发现如果您更改带有 MKMapView 的视图上的导航栏色调颜色,您无法更改它?例如,假设您在 AppDelegate 中设置以下代码,将颜色更改为绿色:

[[UINavigationBar appearance] setBarTintColor:[UIColor greenColor]];

任何带有 MKMapView uiviewcontroller 条纹色调都保持黑色,无论我做什么,我都无法改变它。所有其他uiview控制器都没有任何问题。是的,我已经尝试通过将代码直接放在univiewcontroller .m文件中来强制进行更改,但仍然不会更改。

其他人有这个问题并且能够修复它吗?

1 个答案:

答案 0 :(得分:4)

这是我最终的解决方法。将它们放在所有视图控制器上:

- (void)viewWillAppear:(BOOL)animated
{
    self.navigationController.navigationBar.translucent = NO;
}

- (void)viewDidAppear:(BOOL)animated
{
    self.navigationController.navigationBar.translucent = YES;
}

我将补丁(swizzling)加入到UIViewControllers中,就是这样。如果你有任何UIViewController的子类覆盖viewWillAppearviewDidAppear,那么请确保你也发送超类这些消息。

注意:但是,当半透明在你眼前踢时,这会产生短暂闪光的副作用。