ios - 更改 ios8 扩展导航栏颜色

标签 ios objective-c ios8

我正在开发 iOS8 应用扩展(照片编辑扩展)

我试过这些方法来更新导航栏的颜色,但失败了:

[[UINavigationBar appearance] setBarTintColor:[UIColor yellowColor]];
[[UINavigationBar appearance] setTintColor:[UIColor blueColor]];
[[UINavigationBar appearance] setBackgroundColor:[UIColor blueColor]];

它显示默认的半透明灰色导航栏。

default nav. color

有人知道如何更改 iOS8 扩展中的导航栏颜色吗?

最佳答案

首先尝试 self.navigationController.navigationBar.barTintColor = UIColor.yellow。 这应该适用于某些主机应用程序,但不是全部。因为一些主机应用程序在 UIAppearance 设置中配置颜色。

我在这里找到了一些信息:https://pspdfkit.com/blog/2017/action-extension/#uiappearance
根据上面的链接,扩展程序将“从其主机应用程序中获取 UIAppearance 设置”,这比您发送给实例的“setColor”消息具有更高的优先级。

在这种情况下,您可以做的是修改扩展的 plist:
NSExtension 字典中,您可以添加键 NSExtensionOverridesHostUIAppearance 并将值设置为 YES。这将使您的扩展覆盖主机应用程序的 UIApprearance 设置。不幸的是,这仅适用于 iOS 10 及更高版本。

希望对您有所帮助。

关于ios - 更改 ios8 扩展导航栏颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25642796/

相关文章:

objective-c - 分组的 UITableView 单元格中的 UITextView

ios - 详细信息 View Controller 中缺少 UIBarButton

objective-c - NSDatePicker 格式化程序

opengl-es - GLKMatrix4(和其他类似的)在 swift 中丢失了吗?

Swift:modalTransitionStyle = .FlipHorizo​​ntal(从右到左)

android - 将数组存储到对象数据类型到 android 和 iOS 中的 firestore(swift)

ios - 在 iOS objective-c 中从前台过渡到后台后继续调用 Web 服务

objective-c - URL applicationWillTerminate Objective-C

ios - 在自定义 Swift 框架中的 Objective-C 文件上使用 Swift

ios - UIAlertController 处理关闭点击外部 (iPad)