2011-01-13 9 views
5

C'è un modo per rendere trasparente UIPopOver (alfa = 0,75 o giù di lì). Sfortunatamente non esiste una proprietà alpha per UIPopOver. Devo presentare un popover in modo che la vista sottostante sia ancora parzialmente visibile. Tutte le ideeTransparent UIPopover

risposta

4
popoverController.contentViewController.view.alpha = 0.5; 

alfa è una proprietà di un UIView quindi è necessario per ottenere la vista del Popover e quindi impostare l'alfa a quella vista.

+1

mentre questo dovrebbe funzionare in teoria, in realtà non funzionerà. –

3

Attualmente non esiste una proprietà per impostare l'alfa di un UIPopoverController.

Se lo fai: popoverController.contentViewController.view.alpha = 0.5;

L'interno contenuto & sarà trasparente e non il UIPopoverController stesso.

Related question

6

partire con iOS5.0, uno in grado di fornire uno sfondo personalizzato per il UIPopoverController. Lo sfondo deve essere derivato da UIPopoverBackgroundView che fornisce le normali proprietà UIView come alpha. Si noti che il nome è un po 'confuso - il UIPopoverBackgroundView fornisce la grafica di cornice, la freccia e lo sfondo.

Quindi, se avete bisogno di un interamente semitrasparente UIPopoverController, tutto quello che dovete fare è fornire una classe UIPopoverBackgroundView che imposta il suo alpha verso qualcosa sotto 1.0. Dovrai anche assicurarti che la vista di contentViewController sia (completamente) trasparente.

Esempio:

enter image description here


Per i dettagli, see the popoverBackgroundViewClass property of UIPopoverController:

popoverBackgroundViewClass 

classe da utilizzare per la visualizzazione del contenuto di popover sfondo.

@property (nonatomic, readwrite, retain) Class popoverBackgroundViewClass 

Discussione

Il valore predefinito di questa proprietà è nulla, il che indica che il controllore popover deve utilizzare l'aspetto predefinito popover. Impostando questa proprietà su un valore diverso da zero, il controller popover utilizza la classe specificata per disegnare il contenuto di sfondo del popover. La classe specificata deve essere una sottoclasse di UIPopoverBackgroundView.

Disponibilità Disponibile in iOS 5.0 e versioni successive. Dichiarato in UIPopoverController.h

+0

Havent lo ha usato ancora ma è bello vedere che c'è ancora più da personalizzare di un UIPopover – Jasper

+3

Questo supporto è stato deprecato in iOS 9.0. Non pensate che qualcuno sappia se c'è un modo più nuovo? –

0

È ora possibile utilizzare la proprietà backgroundColour del popoverPresentationController per eseguire questa operazione, ad es.

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

(non dimenticare di impostare la visualizzazione nella popover e controlli in quella vista a trasparente così come appropriato per l'effetto che si sta tentando di acheive)

Vedere this SO answer per maggiori dettagli.

Problemi correlati