2011-01-13 6 views
5

Czy istnieje sposób, aby UIPopover był przezroczysty (alfa = 0,75 lub mniej). Niestety nie ma żadnej właściwości alfa dla UIPopOver. Muszę przedstawić popust, aby widok pod nim był nadal częściowo widoczny. Wszelkie pomysłyPrzejrzysty UIPopover

Odpowiedz

4
popoverController.contentViewController.view.alpha = 0.5; 

alfa jest właściwością UIView więc trzeba uzyskać pogląd popover a następnie ustawić alfa do tego widoku.

+1

podczas gdy powinno to działać w teorii, w rzeczywistości nie zadziała. –

3

Obecnie nie ma właściwości do ustawienia wartości alfa na UIPopoverController.

Jeśli zrobić: popoverController.contentViewController.view.alpha = 0.5;

Wewnątrz widok & zawartość będzie przezroczysty i nie sama UIPopoverController.

Related question

6

Począwszy iOS5.0 można dostarczyć niestandardowe tło dla UIPopoverController. Tło to musi pochodzić z UIPopoverBackgroundView, które zapewnia normalne właściwości: UIView, takie jak alpha. Należy pamiętać, że nazwa jest nieco myląca - UIPopoverBackgroundView zapewnia ramkę, strzałkę, a także grafikę tła.

Więc jeśli trzeba całkowicie półprzezroczyste UIPopoverController, wszystko co musisz zrobić, to dostarczyć UIPopoverBackgroundView klasy, które ustawia jego alpha do czegoś poniżej 1.0. Musisz również upewnić się, że widok contentViewController jest (całkowicie) przezroczysty.

Przykład:

enter image description here


Szczegółowe see the popoverBackgroundViewClass property of UIPopoverController:

popoverBackgroundViewClass 

Klasa używać do wyświetlania zawartości popover tła.

@property (nonatomic, readwrite, retain) Class popoverBackgroundViewClass 

Dyskusja

Domyślna wartość tej właściwości jest zero, co oznacza, że ​​kontroler popover należy użyć domyślny wygląd popover. Ustawienie tej właściwości na wartość inną niż zero powoduje, że kontroler popover używa określonej klasy do narysowania treści tła popover. Podana klasa musi być podklasą UIPopoverBackgroundView.

Dostępność Dostępne w iOS 5.0 i nowszych wersjach. Zadeklarowana w UIPopoverController.h

+0

Nie użyłem go jeszcze, ale dobrze, aby zobaczyć, że w końcu można jeszcze bardziej dostosować UIPopover – Jasper

+3

Ta obsługa została wycofana w iOS 9.0. Nie przypuszczam, że ktoś wie, czy istnieje nowsza metoda? –

0

Można teraz użyć właściwości backgroundColour obiektu popoverPresentationController, aby to zrobić, np.

  if let popoverPresentationController = myController.popoverPresentationController { 
       popoverPresentationController.backgroundColor = UIColor(white: 1, alpha: 0.5) 
      } 

(nie zapomnij ustawić widok w popover i kontroli w tym celu przezroczyste, jak również właściwego do skutku próbujesz acheive)

Zobacz this SO answer więcej szczegółów.