2011-11-30 12 views
5

Ho un requisito in cui devo disegnare l'ombra di una vista oltre la cornice della vista. Abbiamo già una complessa gerarchia di visualizzazione/stratificazione e non sarebbe ora possibile modificare i frame e il layout della vista per adattarli alle ombre all'interno dei limiti della vista di viewController.UIView disegna ombra oltre la cornice della vista

1. Sono po 'preoccupato qui dal fatto che io sono permesso di attirare l'ombra di fuori della vista seguendo questa metodologia:

"È inoltre possibile creare un'ombra che sarà basato su . la componente alpha di tutto ciò che è disegnato nella vista Spesso questo si tradurrà in un'ombra solo intorno ai bordi della vistaquesto codice di esempio su un UILabel:.

label.layer.shadowColor = [UIColor blackColor].CGColor; 
label.layer.shadowOpacity = 1.0; 
label.layer.shadowRadius = 5.0; 
label.layer.shadowOffset = CGSizeMake(0, 3); 
label.clipsToBounds = NO; 

In questo caso, è necessario che ClipToBounds sia impostato su NO per far apparire un'ombra all'esterno della cornice della vista. Poi ti mostrerò come puoi effettivamente combinare gli angoli arrotondati e le ombre, poiché sono sicuro che questo è ciò che vuoi veramente fare ora. "

Riferimento: http://bynomial.com/blog/?p=52

2. Ora, mi sono imbattuto in fili che dice che il disegno ombre al di fuori della vista non è incoraggiato, ma nessuna spiegazione:. How can I draw a shadow beyond a UIView's bounds?

C'è qualche motivo per cui non dovremmo disegnare ombre (CALayer) al di fuori del frame della vista? O, sta bene seguendo il primo approccio?

Grazie, Raj

risposta

6

Non vedo assolutamente alcun motivo per non disegnare un'ombra in questo modo, e questo è francamente l'unico modo. Perché non ti "permetterebbe" di disegnare un'ombra fuori dai limiti? Questo è ciò che la proprietà clipsToBounds è per.

Problemi correlati