更改ios8扩展导航栏的颜色

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

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

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

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

默认导航。颜色

有没有人有想法如何更改iOS8扩展中的导航栏颜色?

尝试self.navigationController.navigationBar.barTintColor = [UIColor yellowColor]; 第一。 这应该适用于一些主机应用程序,但不是全部。 由于某些主机应用程序在UIAppearance设置中configuration颜色。

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

所以你可以做的是configuration扩展的plist:
NSExtension字典中,您可以指定关键字NSExtensionOverridesHostUIAppearance并将其值设置为YES 。 这将使您的扩展覆盖宿主应用程序的UIApprearance设置。 不幸的是,这只适用于iOS 10及更高版本。

希望你觉得有帮助。

尝试将UINavigationBar的半透明设置为如下所示的NO ,我相信那么它应该开始拾取颜色

 [[UINavigationBar appearance] setTranslucent:NO]; 

以下是UINavigationBar translucent属性的Apple文档

我已经把你的代码在appDelegate didFinishLaunchWithOption

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [[UINavigationBar appearance] setBarTintColor:[UIColor yellowColor]]; [[UINavigationBar appearance] setTintColor:[UIColor blueColor]]; [[UINavigationBar appearance] setBackgroundColor:[UIColor blueColor]]; return YES; } 

而作品…

在这里输入图像说明