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

oaxa6hgo  于 11个月前  发布在  iOS
关注(0)|答案(5)|浏览(135)

在一个应用程序中,我使用白色作为主色调。如果用户打开UIActivityViewController,我将控制器的色调设置为标准的iOS蓝色。这对于Activity视图本身非常有效,但当用户想要发送邮件时,色调颜色不是蓝色,而是白色。
如果能有一种方法来设置所呈现视图的色调就太好了。有吗?
打开MFMailComposeViewController并将色调设置为蓝色也会对显示的UIActionSheet产生影响,如果从UIActivityViewController中打开MFMailComposeViewController,则不会产生影响。
请参阅屏幕截图以了解说明:https://i.stack.imgur.com/egnTm.png
编辑:这是我为UIActivityViewController添加色调颜色所做的:

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

字符串

b09cbbtk

b09cbbtk1#

你能做的最好的事情就是在你呈现它之前,在UIActivityViewController上设置窗口的色调为系统蓝色或任何你想要的色调,然后在你关闭它之前将窗口的色调改变回原始的颜色。这将起作用。这是我如何做到的:

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

字符串
然后

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

dxpyg8gm

dxpyg8gm2#

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

[[UIBarButtonItem appearance] setTintColor:tintColor];

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

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

m3eecexj

m3eecexj3#

我还没有设法让这个工作在所有,但你有没有考虑替代方案-离开文本白色和改变导航栏背景颜色,使他们显示,例如:

UINavigationBar.appearance().backgroundColor = .black

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

1sbrub3j

1sbrub3j4#

基本上,您的应用程序将使用此UINavigationBar作为默认设置
第一个月
试试这个

rbpvctlc

rbpvctlc5#

在初始化之后但在呈现之前,在您的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];

字符串

相关问题