7

我在 UIView 中有一个 MKMapView。在 iOS7 之前从来没有任何问题。我的 UITabbar 和 UINavigationBars 的颜色是由 UIAppearance 协议设置的。

出于某种原因,每当启动 MKMapView 时,我的所有选项卡栏和导航栏都会重置,忽略我的外观类的 barTintColor 设置。UIAppearance 的所有其他设置似乎仍然存在,例如标题属性和 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。

所以颜色是正确的。

半透明是可以的。

阿尔法是 1.0。

然而,酒吧是完全透明的,没有颜色,没有色调。

我想我会把它作为一个错误正式提交。我制作了一个只有 MKMapview 的测试 viewController。没有代码,没有委托,没有注释。提出来代替我的适当控制器。同样的事情也发生了。

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

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

4

1 回答 1

8

经过一番搜索,我发现开发者论坛中有一些相关的主题,这个问题已经被注意到了一段时间。我希望我会收到我的错误报告是骗子的回应。与此同时,我相信我已经想出了一个解决方法。

我想出的是一系列设置

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

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

我在带有地图的视图控制器中使用了一系列 NSNotification 帖子。我对导航控制器和标签栏进行了子类化,以使它们监听通知并通过切换自己的栏半透明属性来响应。

设法完成它。使用少量代码,但毫无理由地进行大量活动。更希望尽快修复此问题。

于 2013-10-01T01:30:15.727 回答