2012-07-25 14 views
5

Ho visto molti frammenti che sono troppo complicati per qualcosa di semplice come un'ombra esterna, che richiede la creazione di sottoclassi di UIView e l'uso delle chiamate di quarartz2d, ​​oppure non riesco a farli lavoro.Ombreggiatura più semplice (rettangolare) per un UIView

Voglio solo fare questo su una vista che sto aggiungendo come una sottoview ad un altro (la sottoview è presa da un'altra viewController sto solo assegnando - so che probabilmente non è bello ma vabbè), no IB o niente. qual è il modo più semplice/accettato di farlo? sarebbe diverso se volessi che funzionasse su iOS 4?

risposta

10

E 'facile come l'importazione e l'utilizzo di <QuartzCore/QuartzCore.h> un frammento simile, come di seguito:

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

anche assicurarsi che self.viewAboutContainer.clipsToBounds = NO. Altrimenti, l'ombra cadrà fuori dalla vista e verrà tagliata. –

+0

@Brayden avevo risolto il problema di perfomence usando "[myview.layer setShadowPath: [UIBezierPath bezierPathWithRect: myview.bounds] .CGPath];". Ombra e angolo radioso funzionano bene in modalità verticale con scorrimento uniforme. ma la mia app è supportata in entrambe le modalità e quando cambio l'ombra di orientamento non funziona correttamente (visualizzazione dell'ombra secondo fram di Portrait View). Qualche idea su come risolverlo? – Hitarth

+1

@VictorEngel viewAboutContainer è un nome di _any_ UIView o qualsiasi elemento che erediti UIView (ad esempio UIImageView). Il nome è solo un segnaposto. – Brayden

Problemi correlati