在iOS 7中,标准UIActivityViewController
具有半透明的白色背景。相反,我的应用程序有一个黑暗的主题。当白色UIAcitivityViewController
在黑暗的应用程序背景上弹出时,它看起来很糟糕。
有没有办法更改 UIAcitivityViewController
的背景颜色?
我试过了
activityVC.view.backgroundColor = [UIColor blackColor]
,但这会使整个屏幕变黑,而不仅仅是UIAcitivity
图标占用的区域,如标准白色背景。
答案 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];
}
模拟器中的样子,例如:
答案 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]];