MKMapview影响UINavigationBar和TabBar外观

时间:2013-09-29 16:32:56

标签: iphone ios mkmapview uiappearance

我在UIView中有一个MKMapView。 iOS7之前从未出现任何问题。 UITabbar和UINavigationBars的颜色由UIAppearance Protocol设定。

出于某种原因,无论何时启动MKMapView,我的所有标签栏和导航栏都会重置,忽略我的外观类的barTintColor设置。 UIAppearance的所有其他设置似乎仍然是title属性和barItem属性。只有barTintColor会消失。

还有一件事。这只发生在iPhone 4和iPhone4S上,而不是iPhone 5上。它也不会发生在模拟器上。在iOS6中根本不是问题。

我找不到重置的其他原因。我经历了几乎关于所有事情的评论,但无论如何都没有效果。

如果删除MKMapView控件,则不会重置颜色。如果我继续使用MKMapView呈现另一个完全不同的视图,那么颜色将重置。

我正在寻找还有什么可以检查的想法,什么样的设置或方法可能会导致这种行为。给我一些消除的东西,我被困住了。

其他信息:

现在想到这可能是一个错误。我在ViewDidLoad中用一行代码将导航栏的颜色硬编码为任意颜色,只是为了看看发生了什么。

UINavigationBar *bar = self.navigationController.navigationBar;
[bar setBarTintColor = [UIColor GreenColor];

我在下一行休息了一下。检查栏,颜色似乎已设定。

在iPhone4或4S上,条形不会变为绿色。在iPhone5和模拟器上,条形变为绿色。

我发现的更多项目。颜色没有变化。可见性似乎是。然而,读取颜色和条形的alpha都会返回1.0。

所以颜色是正确的。

半透明是肯定的。

Alpha是1.0。

然而酒吧完全清晰,没有颜色,没有色调。

我想我会将此正式归档为错误。我做了一个只有MKMapview的测试viewController。没有代码,没有代表,没有注释。提出代替我的适当控制器。同样的事情发生了。

我现在需要的是一种解决方法。我只是不知道有什么变化。当我检查导航栏的属性时,一切都是正确的。色调,半透明,条纹色调,alpha值。据我所知,这件事应按预期显示。

有人能告诉我其他可以使导航栏背景完全透明的属性或方法吗?

1 个答案:

答案 0 :(得分:8)

经过一些搜索后,我发现开发人员论坛中有一些相关的主题,这个问题已经有一段时间了。我希望我会收到回复,我的错误报告是一个骗局。与此同时,我相信我已经提出了一个解决方法。

我想出的是一系列设置

self.navigationController.navigationBar.translucent = NO;
self.tabBarController.tabBar.translucent = NO;

加载包含MKMapView的视图,然后在viewDidAppear中将其设置为YES。我在viewWillDisappear上再次设置为NO。然后返回的viewController必须在其viewDidAppear中再次重置为半透明。

我在View Controllers中使用了一系列带有地图的NSNotification帖子。我将我的导航控制器和标签栏子类化,使他们听取通知并通过切换他们自己的条形半透明属性来做出响应。

管理完成它。使用少量代码,但没有充分理由这是一项非常多的活动。更愿意看到这个固定的ASAP。