4

在 iOS 7 中,该标准UIActivityViewController具有半透明的白色背景。相反,我的应用程序有一个黑暗的主题。当白色UIAcitivityViewController在黑暗的应用程序背景上弹出时看起来很糟糕。

有没有办法改变 a 的背景颜色 UIAcitivityViewController

我试过 activityVC.view.backgroundColor = [UIColor blackColor]了,但这会使整个屏幕变黑,而不仅仅是UIAcitivity标准白色背景等图标占据的区域。

UIActivityViewController 的屏幕截图

4

5 回答 5

0

这应该可以解决问题:

[[UIView appearanceWhenContainedIn:[UIActivityViewController class], nil] setBackgroundColor:[UIColor greenColor]];
于 2013-10-28T20:18:26.283 回答
0

虽然我的解决方案似乎有点不稳定,但它适用于 iOS7 和 iOS8。如果某些事情突然发生变化,它也不会使您的应用程序崩溃;

UIActivityViewController *aVC = [[UIActivityViewController alloc] initWithActivityItems:@[[NSURL urlWithString:@"http://example.com"] applicationActivities:nil];
id targetView = [[[[[[[[[[[aVC.view.subviews lastObject] subviews] firstObject] subviews] firstObject] subviews] firstObject] subviews] firstObject] subviews] firstObject];
if ([targetView respondsToSelector:@selector(setBackgroundColor:)])
{
    UIColor *targetColor = ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) ? [[UIColor redColor] colorWithAlphaComponent:0.3] : [UIColor redColor];
    [targetView setBackgroundColor:targetColor];
}

它在模拟器中的样子,例如:

在此处输入图像描述

于 2014-09-21T22:28:28.177 回答
0

强制 UIActivityViewController 进入暗模式的快速回答(同样适用于亮模式,只需替换.dark.light):

activityViewController.overrideUserInterfaceStyle = .dark

// these two are needed for the modification of the Save to Files dialog
UINavigationBar.appearance().overrideUserInterfaceStyle = .dark
UITableView.appearance().overrideUserInterfaceStyle = .dark
于 2021-09-18T08:49:39.607 回答
0

我得到的只是改变主视图的背景。尝试更改其中标签的颜色没有成功。

let aType = NSClassFromString("_UIShareExtensionRemoteViewController") as! UIAppearanceContainer.Type
UIView.appearance(whenContainedInInstancesOf: [aType.self]).backgroundColor = UIColor.red
于 2019-04-04T23:24:28.740 回答
-2
socialActivityPopover = [[UIPopoverController alloc] initWithContentViewController:activityView];
[socialActivityPopover setBackgroundColor:[UIColor redColor]];
于 2013-12-19T10:24:22.700 回答