2014-10-16 52 views
0

我想添加一个图像到导航栏。香港专业教育学院使用UINavigationBar外观addSubview在iOS中不工作8

[[UINavigationBar appearance] addSubview:logoImage]; 

似乎与iOS 7的工作,但不与iOS 8的工作,任何人可以请解释为什么发生这种情况,什么是对的iOS 8添加导航栏上的ImageView的替代方式?

回答

1

调用[[UINavigationBar appearance]返回接收器类的外观代理。 addSubview:方法未标记为UI_APPEARANCE_SELECTOR。 UIAppearance的代理方法的一个主要缺点是很难知道哪些选择器兼容。

这篇文章解释了它好一点:http://nshipster.com/uiappearance/ 而这个链接https://gist.github.com/mattt/5135521从文章中显示,被标记为UI_APPEARANCE_SELECTOR在iOS的7

你应该继承UINavigationBar并调用[[UINavigationController alloc] initWithNavigationBarClass:toolBarClass:]方法。将您的新导航栏子类作为第一个参数,并将nil作为第二个参数,以使用标准UIToolbar。在你的子类中,像你一样添加图像。

另一种可行的方法是获取导航控制器的导航栏并在其中添加子视图,如下所示: [self.navigationController.navigationBar addSubview:logoImage]。这可能会起作用,但创建自己的子类肯定会给你更多的灵活性。

+0

非常感谢我需要一个快速修复和'[self.navigationController.navigationBar addSubview:logoImage]'完美的工作,所以没有子类的'UINavigationBar' – Bonnie 2014-10-23 08:20:15