2012-07-25 18 views
5

He visto muchos fragmentos que: son demasiado complicados para algo tan simple como una sombra paralela, requieren la subclasificación de UIView y el uso de llamadas quartz2d, ​​o no puedo obtenerlos trabajo.sombreado simple (rectangular) para una UIView

Solo quiero hacer esto en una vista que estoy agregando como una subvista a otra (la subvista es tomada desde otra viewController que estoy asignando - Sé que probablemente no sea agradable pero bueno), no IB o algo. ¿Cuál es la forma más simple/más aceptada de hacerlo? ¿Sería diferente si quiero que funcione en iOS 4?

Respuesta

10

Es tan fácil como la importación de <QuartzCore/QuartzCore.h> y el uso de un fragmento similar a continuación:

self.viewAboutContainer.layer.shadowColor = [[UIColor blackColor] CGColor]; 
self.viewAboutContainer.layer.shadowOpacity = 0.7; 
self.viewAboutContainer.layer.shadowRadius = 4.0; 
self.viewAboutContainer.layer.shadowOffset = CGSizeMake(5.0f, 5.0f);  
self.viewAboutContainer.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.viewAboutContainer.bounds].CGPath; 
+2

También asegúrese de que self.viewAboutContainer.clipsToBounds = NO. De lo contrario, la sombra caerá fuera de la vista y se recortará. –

+0

@Brayden había resuelto el problema del rendimiento usando "[myview.layer setShadowPath: [UIBezierPath bezierPathWithRect: myview.bounds] .CGPath];". Shadow y corner radious funcionan bien en el modo vertical con desplazamiento suave. pero mi aplicación es compatible en ambos modos y cuando cambio la sombra de orientación no funciona correctamente (visualización de sombras de acuerdo con el retrato de Portrait View). ¿Alguna idea de cómo resolver esto? – Hitarth

+1

@VictorEngel viewAboutContainer es un nombre de _any_ UIView o cualquier cosa que hereda UIView (es decir, UIImageView). El nombre es solo un marcador de posición. – Brayden

Cuestiones relacionadas