2013-10-28 83 views
4

在iOS 7中,標準UIActivityViewController具有半透明白色背景。相反,我的應用程序有一個黑暗的主題。當白色的UIAcitivityViewController在黑暗的應用背景上彈出時,它看起來很糟糕。更改UIActivityViewController的背景顏色

有沒有辦法改變背景顏色UIAcitivityViewController

我已經試過 activityVC.view.backgroundColor = [UIColor blackColor],但是這使得整個畫面的黑色,而不是僅僅由UIAcitivity圖標,如標準的白色背景上所佔的面積。

enter image description here

回答

0

這應該做的伎倆:

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

這具有如'activityVC.view.backgroundColor =相同的效果[的UIColor blackColor]'。它使一切都變黑,而不僅僅是圖標的下半部分。另外,當我選擇一個帶有alpha的顏色即0.5時,它看起來很奇怪,因爲我可以看到子視圖的框架。 – Mischa

-2
socialActivityPopover = [[UIPopoverController alloc] initWithContentViewController:activityView]; 
[socialActivityPopover setBackgroundColor:[UIColor redColor]]; 
+0

請添加一些解釋。 – DontVoteMeDown

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]; 
} 

它看起來像在模擬器什麼,例如:

enter image description here