我想向导航栏添加图像。我用过
[[UINavigationBar appearance] addSubview:logoImage];
它似乎适用于 iOS 7 但不适用于 iOS 8,任何人都可以解释为什么会发生这种情况,以及在 iOS 8 中的导航栏上添加 imageView 的替代方法是什么?
最佳答案
调用 [[UINavigationBar appearance]
返回接收器类的外观代理。 addSubview:
方法未标记为 UI_APPEARANCE_SELECTOR
。 UIAppearance 代理方法的一个主要缺点是很难知道哪些选择器是兼容的。
这篇文章解释得更好一点:http://nshipster.com/uiappearance/
还有这个链接https://gist.github.com/mattt/5135521从文章中,显示了在 iOS 7 中被标记为 UI_APPEARANCE_SELECTOR
的方法。
您应该继承 UINavigationBar
并调用 [[UINavigationController alloc] initWithNavigationBarClass:toolBarClass:]
。将新的导航栏子类作为第一个参数传递,将 nil 作为第二个参数传递,以使用标准 UIToolbar
。在您的子类中,就像您正在做的那样添加图像。
另一种可行的方法是获取导航 Controller 的导航栏并在那里添加 subview ,如下所示:
[self.navigationController.navigationBar addSubview:logoImage]
。这可能行得通,但是创建自己的子类肯定会给您带来更大的灵 active 。
关于ios - UINavigationBar 外观 addSubview 在 iOS 8 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26413782/