2011-05-12 16 views

Respuesta

3

Desafortunadamente, UIPopoverController no se puede personalizar así. No puede cambiar el color del borde, el estilo/color de la barra de navegación o el estilo/color de la flecha: How to customize/style a UIPopoverController.

+2

Esto ya no es válido, después de que iOS5 popoverBackgroundView se pueda subclasificar, esta es una buena que acabo de utilizar: https://github.com/GiK/GIKPopoverBackgroundView –

+0

Nota: la respuesta anterior es obsoleta. Ahora en iOS 7, para la barra de navegación y los cambios de color de la flecha, 'UIPopoverController' ha introducido' backgroundColor' como propiedad. Ver mi respuesta a continuación. – Ashok

-2

trato de engañar por la personalización de la viewcontroller dentro del popover y luego ocultar la frontera popover utilizando este código

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

La aplicación es en realidad todavía en desarrollo, así que espero que otras personas van a comentar en este solución.

+4

La modificación de la jerarquía de vistas no expuestas probablemente sea una mala idea, incluso si su aplicación es aceptada. Si Apple modificara la vista en el futuro, su código dejaría de funcionar repentinamente. – mjisrawi

+0

Es posible que desee vincular a su respuesta dup en http://stackoverflow.com/a/7063257/1015071 –

0

La barra de navegación y la barra de herramientas dentro de un popover son solo un estándar UINavigationBar y UIToolBar, he tenido éxito en cambiar su apariencia como lo harías con una barra de navegación normal o una barra de herramientas. Sin embargo, el borde no se puede personalizar fácilmente.

5

Ahora en iOS 5, popoverBackgroundViewClass está disponible.

41

iOS 7 en adelante, puede cambiar backgroundColor de UIPopoverController que afecta el color de fondo de navegación y las flechas de popover. ejemplo

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

Uso:

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

Nota - A partir de ahora (iOS 7.0.3), en algunos casos (como el color conjunto utilizando colorWithPatternImage :), el simulador no honra al color pero en el dispositivo funciona bien.

+5

Debe ser la respuesta aceptada. – Goles

+0

Sí, si solo necesita cambiar el fondo del popover (incluida la flecha), esta es la forma más rápida de hacerlo. Mucho mejor que subclasificar 'UIPopoverBackgroundView' para un cambio simple. – timgcarlson

+0

Tenga en cuenta que si la vista que está mostrando dentro del popover tiene su propio color de fondo, solo verá el color de fondo del popover en la flecha. – arlomedia

Cuestiones relacionadas