Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改ios8扩展导航栏颜色_Ios_Objective C_Ios8 - Fatal编程技术网

更改ios8扩展导航栏颜色

更改ios8扩展导航栏颜色,ios,objective-c,ios8,Ios,Objective C,Ios8,我正在开发iOS8应用程序扩展(照片编辑扩展) 我尝试了以下方法来更新导航栏颜色,但失败: [[UINavigationBar appearance] setBarTintColor:[UIColor yellowColor]]; [[UINavigationBar appearance] setTintColor:[UIColor blueColor]]; [[UINavigationBar appearance] setBackgroundColor:[UIColor blueColor]]

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

我尝试了以下方法来更新导航栏颜色,但失败:

[[UINavigationBar appearance] setBarTintColor:[UIColor yellowColor]];
[[UINavigationBar appearance] setTintColor:[UIColor blueColor]];
[[UINavigationBar appearance] setBackgroundColor:[UIColor blueColor]];
它显示默认的半透明灰色导航栏


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

尝试将
UINavigationBar
的半透明性设置为
NO
,如下图所示,我相信它应该开始选择颜色

[[UINavigationBar appearance] setTranslucent:NO];

以下是我已将您的代码放入appDelegate DidFinishLaunchWith选项中的

- (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;
}
而且工作


首先尝试
self.navigationController.navigationBar.barTintColor=UIColor.yellow
。 这应该适用于某些主机应用程序,但不是所有主机应用程序。因为某些主机应用程序会在UI外观设置中配置颜色

我在这里找到了一些信息:
根据上面的链接,该扩展将“从其主机应用程序获取UIAppearance设置”,这比您发送给实例的“setColor”消息具有更高的优先级

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


希望对您有所帮助。

它不起作用。。我认为问题在于
[UINavigationBar外观]
不是访问扩展名中标题栏的方式。@DavidNg Try
[[[[[self-navigationController]navigationBar]外观]setTranslucent:NO]
并将其余的替换为相同的。[[self-navigationController]navigationBar]没有外观属性,外观是来自
UINavigationBar
类的instanceType。@DavidNg抱歉。如果您尝试直接设置它而不使用
外观
,会发生什么情况?不起作用。我猜可能是导航栏没有以这种方式访问。这适用于应用程序的主要部分,但不适用于扩展。你有没有发现这是否可行?还没有@香肠机Calling UINavigationBar.appearance().barTintColor可以工作并更改颜色,但不会扩展到状态栏。这应标记为正确答案-
NSExtensionOverridesHostUIAppearance
解决了问题。