更改ios8扩展导航栏颜色

时间:2014-09-03 11:09:01

标签: ios objective-c ios8

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

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

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

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

default nav. color

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

3 个答案:

答案 0 :(得分:7)

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

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

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

希望你觉得它有用。

答案 1 :(得分:0)

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

[[UINavigationBar appearance] setTranslucent:NO];

这是Apple Documentation for UINavigationBar translucent property

答案 2 :(得分:-2)

我已将您的代码放入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;
}

并且有效......

enter image description here