2011-01-13 20 views
5

¿Hay alguna manera de hacer que UIPopOver sea transparente (alfa = 0,75 o menos). Desafortunadamente no hay una propiedad alfa para UIPopOver. Necesito presentar un popover para que la vista debajo aún sea parcialmente visible. Cualquier ideaTransparente UIPopover

Respuesta

4
popoverController.contentViewController.view.alpha = 0.5; 

alfa es una propiedad de un UIView por lo que necesita para obtener la vista de la Popover y luego configurar el alfa a esa vista.

+1

aunque esto debería funcionar en teoría, en realidad no funcionará. –

3

Actualmente no hay ninguna propiedad para establecer el alfa de UIPopoverController.

Si lo hace: popoverController.contentViewController.view.alpha = 0.5;

El interior Ver el contenido & será transparente y no UIPopoverController sí.

Related question

6

Comenzando con iOS5.0, se puede proporcionar un fondo personalizado para el UIPopoverController. Ese fondo se debe derivar de UIPopoverBackgroundView que proporciona las propiedades normales UIView como alpha. Tenga en cuenta que el nombre es un poco confuso: el UIPopoverBackgroundView proporciona el marco, la flecha y los gráficos de fondo.

Así que si usted necesita un completamente semitransparente UIPopoverController, todo lo que tiene que hacer es proporcionar una clase UIPopoverBackgroundView que establece su alpha hacia algo por debajo 1.0. También deberá asegurarse de que la vista de contentViewController sea (completamente) transparente.

Ejemplo:

enter image description here


Para más detalles, see the popoverBackgroundViewClass property of UIPopoverController:

popoverBackgroundViewClass 

La clase que se utiliza para visualizar el contenido de fondo popover.

@property (nonatomic, readwrite, retain) Class popoverBackgroundViewClass 

Discusión

El valor predeterminado de esta propiedad es nula, lo que indica que el controlador popover debe utilizar la aparición popover predeterminado. Configurando esta propiedad a un valor distinto de nil hace que el controlador popover use la clase especificada para dibujar el contenido de fondo del popover. La clase que especifique debe ser una subclase de UIPopoverBackgroundView.

Disponibilidad Disponible en iOS 5.0 y posterior. declarado en UIPopoverController.h

+0

Havent lo usó aún, pero es bueno ver que finalmente hay más para personalizar de un UIPopover – Jasper

+3

Este soporte estaba en desuso en iOS 9.0. ¿No supongo que alguien sabe si hay una manera más nueva? –

0

Ahora puede usar la propiedad backgroundColour del popoverPresentationController para hacer esto, p.

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

(no se olvide de fijar la vista en el popover y los controles en esa vista a transparente, así como apropiada para el efecto que está intentando acheive)

Ver this SO answer para más detalles.