更改UIActivityViewController的背景颜色

时间:2013-10-28 20:06:36

标签: ios ios7 uicolor uiactivityviewcontroller

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

有没有办法更改 UIAcitivityViewController 的背景颜色?

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

enter image description here

4 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

[[UIView appearanceWhenContainedIn:[UIActivityViewController class], nil] setBackgroundColor:[UIColor greenColor]];

答案 1 :(得分:0)

虽然我的解决方案看起来有点不稳定,但它适用于iOS7和iPad。 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];
}

模拟器中的样子,例如:

enter image description here

答案 2 :(得分:0)

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

let aType = NSClassFromString("_UIShareExtensionRemoteViewController") as! UIAppearanceContainer.Type
UIView.appearance(whenContainedInInstancesOf: [aType.self]).backgroundColor = UIColor.red

答案 3 :(得分:-2)

socialActivityPopover = [[UIPopoverController alloc] initWithContentViewController:activityView];
[socialActivityPopover setBackgroundColor:[UIColor redColor]];