ios - UINavigationBar 外观 addSubview 在 iOS 8 中不起作用

标签 ios objective-c iphone ios7 ios8

我想向导航栏添加图像。我用过

    [[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/

相关文章:

ios - performBatchUpdates 崩溃的噩梦

ios - 如何在启动 Storyboard 中使用 Assets 目录中的启动图像?

Objective-C,UITextView中首字母的自定义样式

iphone - 为什么 UIDocument 需要 40 秒才能加载?

iphone - sqlite错误数据库被锁定

ios - 在 iBeacon Detection 上触发对被杀死/退出的应用程序的本地通知

php - 需要一些使用 MySQL 的 Android 和 iOS 应用程序的初步指导

html - 在iOS中使UIWebview的字体加粗

ios - 如何获取使用自动布局的 UIView 的 x、y、宽度、高度

iphone - iOS 应用程序 - 高级登录屏幕