2011-05-12 55 views

回答

3

不幸的是,UIPopoverController是不可定製的。您無法更改邊框顏色,導航欄樣式/顏色或箭頭樣式/顏色:How to customize/style a UIPopoverController

+2

這不再有效,在iOS5 popoverBackgroundView可以被子類化後,這裏是我剛剛使用的一個好的:https://github.com/GiK/GIKPopoverBackgroundView – 2013-12-10 08:20:06

+0

注意 - 上面的一個是舊的/過時的答案。現在在iOS 7中,對於導航欄和箭頭顏色更改,'UIPopoverController'已經引入'backgroundColor'作爲屬性。請參閱下面的答案。 – Ashok 2014-02-14 02:01:36

-2

我嘗試通過使用此代碼

UIView * border = [[insideViewController.view.superview.superview.superview subviews] objectAtIndex:0]; 
border.hidden = YES; 

的應用程序實際上仍然在發展,所以我希望其他人也對此有何評論定製視圖 - 控制的酥料餅內,然後躲在酥料餅的邊界誘騙解。

+4

即使您的應用程序被接受,修改未曝光的視圖層次結構也可能是一個壞主意。如果將來蘋果修改該視圖,您的代碼會突然停止工作。 – mjisrawi 2011-08-15 09:51:48

+0

你可能想鏈接到你的dup答案http://stackoverflow.com/a/7063257/1015071 – 2012-09-29 20:47:35

0

彈出窗口中的導航欄和工具欄只是一個標準的UINavigationBar和UIToolBar,我已經成功地改變了它們的外觀,就像使用普通的導航欄或工具欄一樣。但是邊框不容易定製。

5

現在在iOS 5中,popoverBackgroundViewClass可用。

41

的iOS 7日起在自定義邊框色調的顏色,bodrer寬度以及箭頭,你可以改變backgroundColor of UIPopoverController影響導航背景顏色以及彈出箭頭。

@property (nonatomic, copy) UIColor *backgroundColor NS_AVAILABLE_IOS(7_0); 

用例:

if ([self.popoverVC respondsToSelector:@selector(setBackgroundColor:)]) { // Check to avoid app crash prior to iOS 7 
     self.popoverVC.backgroundColor = [UIColor greenColor]; 
    } 

注意 - 截至目前(的iOS 7.0.3),在某些情況下(如使用colorWithPatternImage :)集色,模擬器不兌現顏色但在設備上它工作正常

+5

應該是被接受的答案。 – Goles 2014-01-02 16:50:05

+0

是的,如果你只需要改變popover的背景(包括箭頭),這是最快的方法。對UIPopoverBackgroundView進行簡單更改的子類化要好得多。 – timgcarlson 2014-02-03 20:04:56

+0

請注意,如果您在彈出窗口中顯示的視圖具有自己的背景色,則只會在箭頭上看到彈出窗口的背景色。 – arlomedia 2014-03-07 03:39:56