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
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.
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
.
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:
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
Nie użyłem go jeszcze, ale dobrze, aby zobaczyć, że w końcu można jeszcze bardziej dostosować UIPopover – Jasper
Ta obsługa została wycofana w iOS 9.0. Nie przypuszczam, że ktoś wie, czy istnieje nowsza metoda? –
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.
podczas gdy powinno to działać w teorii, w rzeczywistości nie zadziała. –