2011-03-31 77 views
2

在我的Ipad應用程序中,我使用彈出窗口,但是我無法使其透明。 popover裏面有一個tableview;我的代碼是:彈出窗口和透明的桌面

UIViewController* popoverContent = [[UIViewController alloc] init]; 
UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(600, 800, 100, 100)]; 
popoverView.backgroundColor = [UIColor greenColor]; 
popoverContent.view = zoneViewController.view; 
self.popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent]; 
[self.popoverController presentPopoverFromRect:CGRectMake(1200, -200, 50, 375) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:TRUE]; 
[[[popoverController contentViewController] view] setAlpha:0.25f]; 

我能夠使透明只有tableview,但popover仍然黑...爲什麼??

回答

0
[[[popoverController contentViewController] view] setAlpha:0.25f]; 

這會修改zoneViewController視圖的透明度,它將嵌套在Popover中。但是,目前您無法自定義Popover本身的外觀。您可以控制大小和箭頭方向,但不能控制Popover的邊框顏色或邊框透明度。

如果你真的想要一個透明的Popover框架,你必須自己寫。

相關:How to customize/style a UIPopoverController

+0

討論我不想控制邊框顏色o邊框透明度,但只有桌面背景的透明度。如果我用這段代碼設置了我的tableview的alpha = 0:[[[popoverController contentViewController] view] setAlpha:0.25f];我看到所有黑色的popover ...我怎樣才能設置alpha的popover背景?它仍然是黑色的嗎? – CrazyDev 2011-04-01 07:39:16

+0

@blackguardian - popover的背景顏色也不能自定義。如果你想要透明度,你可能必須編寫自己的popover類(這應該不會太難)。 – 2011-04-01 09:05:36

+0

然後你終於告訴我,我永遠不會有透明效應的popover ......是不是? – CrazyDev 2011-04-01 09:32:33

3

我花了幾個小時試圖在這個網站上列出的每個解決方案,使透明度上含有GROUPED UITableView一個UIPopoverController工作 - 其中沒有工作對我來說:

  1. 把父視圖中的彈出窗口並更改該視圖上的alpha。 (FAILED)
  2. 變化子視圖的各種組合(的tableview背景,tableview中細胞,酥料餅的背景等)
  3. 添加背景視圖到細胞中並更改這些阿爾法阿爾法。 (FAILED)
  4. 最後:更改在層級從酥料餅的內容視圖開始EVERY視圖阿爾法(FAILED)

有一個在其具有1.0的alpha酥料餅的一個黑色根視圖和它不」不管你對子視圖做什麼(或者如果你把它放在超級視圖中),透明度都不起作用。所以,我爬了視圖層次結構(通過試驗和錯誤),直到我到達那個被詛咒的黑色視圖並明確設置ITS alpha。成功!我只需要添加一行代碼,彈出窗口可見:

self.popoverController.contentViewController.view.superview.superview.superview.alpha = 0.5; 

N.B.當Apple更新UIPopoverController時,此解決方案可能會停止工作,因此請自擔風險!