更改ios8扩展导航栏颜色
我正在开发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]]
[[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
解决了问题。