2011-10-29 11 views

risposta

3

se per sovrastante un'UIView si intende dipingere lo sfondo con un'immagine, si può fare in questo modo:

someView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImage.png"]]; 

Si potrebbe anche aggiungere un nuovo UIImageView che copre l'UIView dal codice, Init tua UIImageView con lo stesso frame Rect del tuo UIView e aggiungilo come sottoview.

+0

eccellente, grazie. Quindi, non c'è modo di farlo da IB, giusto? – JAM

+0

Esatto, poiché la funzione colorWithPatternImage è un metodo personalizzato, non è un'opzione che appare sull'IB. ci sono solo singoli colori tra cui scegliere. sebbene la stessa operazione possa essere eseguita con IB creando un UIImageView che copre la tua vista e ha lo stesso frame. quando non vuoi che la tua vista sia coperta o meno, puoi semplicemente impostare la sua proprietà .hidden su SÌ/NO. –

+0

Probabilmente opterei per l'opzione 'UIImageView' poiché immagino che sarà più ottimizzato rispetto alla generazione di un pattern che Core Graphics dovrà disegnare dopo aver scoperto la piastrellatura, ecc. –

5

Dalla documentazione UIView:

Immagine a base di sfondi - per le viste che visualizzano contenuti relativamente statici, è consigliabile utilizzare un oggetto UIImageView con sistemi di riconoscimento gesto, invece di sottoclassi e disegnando l'immagine di voi stessi. In alternativa, puoi anche utilizzare un oggetto UIView generico e assegnare la tua immagine come il contenuto dell'oggetto CALayer della vista.

Utilizzando la seconda opzione, per impostare someView di avere uno sfondo di yourImage.png:

someView.layer.contents = (id)[[UIImage imageNamed:@"yourImage.png"] CGImage];

Problemi correlati