如何更改 UIActivityViewController 触发的发送消息对话框中的颜色?

Posted

技术标签:

【中文标题】如何更改 UIActivityViewController 触发的发送消息对话框中的颜色?【英文标题】:How do you change the colors in the Send Message dialog triggered by UIActivityViewController? 【发布时间】:2014-05-23 03:10:57 【问题描述】:

我正在使用 UIActivityViewController 来允许用户在我的应用中发送消息。问题是当我选择 Message 作为我的分享方法时,“To:”部分会继承我的 NavigationBar 的背景颜色。

只有当您选择消息作为您的方法时才会出现问题 - 如果您选择邮件,导航栏下方的所有内容都会以白色背景显示。

这是我的问题的屏幕截图:

在我的AppDelegate.m 中,didFinishLaunchingWithOptions 中有以下代码:

[UINavigationBar appearance].barTintColor = [RMTheme theme].accentLight;
[UINavigationBar appearance].tintColor    = [UIColor whiteColor];

并且活动控制器是通过以下代码触发的:

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];

【问题讨论】:

在推送 MFMailComposeViewController 之前将导航栏颜色更改为白色或默认颜色如何? 这没有任何影响 【参考方案1】:

好吧,我相信您在显示UIActivityViewController 时使用的是“PUSH”样式,而应该使用“Modal”样式。

故事板

代码

[yournavigationController presentModalViewController:YourActivityViewController animated:YES];

解决方案 2 - 使用图片

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"top_bar3"] forBarMetrics:UIBarMetricsDefault];

解决方案 3 - 设置条形色调

[[self navigationController]navigationBar].barTintColor = [UIColor whiteColor];

【讨论】:

我正在使用[self presentViewController:activityViewController animated:YES completion:nil];presentModalViewController 已弃用;但是,当我尝试该方法时,它并没有解决我的问题。 看看方案2和3,可以用image或者tint color覆盖导航栏的颜色。确保在关闭视图时重置颜色。 你可以在你的activityViewController的ViewDidLoad中做到这一点。 对,但我并没有尝试更改导航栏的颜色 - 我正在尝试更改导航栏下方的颜色。 您可以尝试更改activityViewController 子视图的tintColor 吗?如果它仍然无法正常工作,你能告诉我你的这个控制器的故事板结构吗?

以上是关于如何更改 UIActivityViewController 触发的发送消息对话框中的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

我在作为 UIDocumentInteractionController 和 UIActivityViewController 的一部分的 UIActivityGroupViewController

创建类似于新的 iOS 6 按钮共享的自定义共享视图

如何更改主题更改时浮动操作按钮的颜色?

Ubuntu系统如何更改用户密码

更改模式时如何更改导航阴影颜色?

如何更改分区ID为AF?