UIActivityViewController:呈现的视图控制器的色调颜色

Posted

技术标签:

【中文标题】UIActivityViewController:呈现的视图控制器的色调颜色【英文标题】:UIActivityViewController: tint color of presented view controllers 【发布时间】:2015-09-27 10:52:34 【问题描述】:

在一个应用程序中,我使用白色作为主色调。如果用户打开UIActivityViewController,我将控制器的色调设置为标准的 ios 蓝色。这对活动视图本身非常有用,但是当人们想要发送邮件时,色调不是蓝色而是白色。

如果有一种方法可以设置呈现视图的色调颜色,那就太好了。有吗?

打开MFMailComposeViewController 并将色调设置为蓝色也会对显示的UIActionSheet 产生影响,但如果从UIActivityViewController 中打开MFMailComposeViewController,则不会如此。

请参阅屏幕截图以进行澄清:http://i.imgur.com/OggykJF.png

编辑:这就是我为UIActivityViewController 添加色调颜色的方法:

UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:activities];
activityController.view.tintColor = [UIColor blueColor];
[self presentViewController:activityController animated:YES completion:nil];`

【问题讨论】:

您找到解决方案了吗? 【参考方案1】:

您可以做的最好的事情是在您呈现它之前将窗口的色调颜色设置为系统蓝色或您希望在 UIActivityViewController 上的任何色调颜色,然后在您关闭它之前将窗口的色调颜色更改回原始颜色。那可行。我就是这样做的:

UIApplication.shared.keyWindow?.tintColor = Styles.color.systemBlue

然后

UIApplication.shared.keyWindow?.tintColor = Styles.color.tint

【讨论】:

【参考方案2】:

无论我尝试什么,邮件共享控制器的取消和发送按钮都是蓝色的,我遇到了同样的问题。我发现调整导航栏的外观并没有奏效。所以我用了这个...

[[UIBarButtonItem appearance] setTintColor:tintColor];

我在加载时调用并设置所有全局外观的“外观”类中执行此操作。对于导航栏颜色,如果您需要在呈现共享控制器 (UIActivityViewController) 之前动态更改它,您可以在首次呈现控制器时在完成块中进行更改。例如:

[self presentViewController:[self _shareController] animated:YES completion:^
    [[UINavigationBar appearance] setBarTintColor:[UIColor yourNavBarColor]];
];

【讨论】:

【参考方案3】:

我根本没有设法让它工作,但您是否考虑过替代方案 - 将文本保留为白色并更改导航栏背景颜色以便它们显示,例如与:

    UINavigationBar.appearance().backgroundColor = .black

这似乎适用于邮件和 Twitter 共享屏幕导航栏上的按钮。

【讨论】:

【参考方案4】:

在您的 UIActivityViewController 初始化之后但呈现之前设置 tintColor。

UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:activities];

//Set the tint color on just the activity controller as needed here before presenting
[activityController.view setTintColor:[UIColor blueColor]];

[self presentViewController:activityController animated:YES completion:nil];

【讨论】:

感谢您的回答!当然,这正是我所做的。因此,这对我没有帮助。

以上是关于UIActivityViewController:呈现的视图控制器的色调颜色的主要内容,如果未能解决你的问题,请参考以下文章

UIActivityViewController 背景颜色

UIActivityViewController 共享 UIActivity 未显示

UIActivityViewController 不适用于 WKWebView

限制 UIActivityViewController 共享扩展活动

尝试呈现 UIActivityViewController 时崩溃

更改 UIActivityViewController 的 navigationBar 的颜色