我在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值。据我所知,这件事应按预期显示。
有人能告诉我其他可以使导航栏背景完全透明的属性或方法吗?
答案 0 :(得分:8)
经过一些搜索后,我发现开发人员论坛中有一些相关的主题,这个问题已经有一段时间了。我希望我会收到回复,我的错误报告是一个骗局。与此同时,我相信我已经提出了一个解决方法。
我想出的是一系列设置
self.navigationController.navigationBar.translucent = NO;
self.tabBarController.tabBar.translucent = NO;
加载包含MKMapView的视图,然后在viewDidAppear中将其设置为YES。我在viewWillDisappear上再次设置为NO。然后返回的viewController必须在其viewDidAppear中再次重置为半透明。
我在View Controllers中使用了一系列带有地图的NSNotification帖子。我将我的导航控制器和标签栏子类化,使他们听取通知并通过切换他们自己的条形半透明属性来做出响应。
管理完成它。使用少量代码,但没有充分理由这是一项非常多的活动。更愿意看到这个固定的ASAP。