2010-08-13 19 views
13

Come si imposta l'immagine di sfondo del mio UIViewController? Qual è il codice per farlo? In questo momento hoSfondo UIViewController Immagine

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"image.jpg"]]; 

ma non voglio uno schema. Voglio che riempia lo schermo correttamente.

risposta

34

si potrebbe usare:

UIImageView *backgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Blah.png"]]; 

[self.view addSubview:backgroundImage]; 
[self.view sendSubviewToBack:backgroundImage]; 
[backgroundImage release]; 

Apple HD image Guide

+1

L'iPhone 4 è 960-by-640-pixel a 326 ppi secondo il sito web di Apple. Quando faccio un'immagine così grande, è troppo grande per uno sfondo quando provo a metterlo sul mio telefono usando quel codice. Come posso adattarlo? Sto cercando di creare uno sfondo ad alta risoluzione per una delle mie applicazioni. – CodeGuy

+0

ahh. Vorrei provare a leggere la conversione da punto a pixel (c'è una linea guida a questo da qualche parte). Personalmente non sono esattamente sicuro di come funzioni, ma dovresti semplicemente aggiustare la cornice di UIImageViews? Personalmente non ho mai usato la risoluzione HD per iPhone4. –

+0

Cosa intendi per conversione "punti per pixel"? Ti dispiacerebbe aiutarmi a trovare qualche guida su questo? – CodeGuy

1

Per espandere il codice di Jesse Naugher: UIView (o UIViewController, è per questo), detiene alcun modo built-in di utilizzare un'immagine di sfondo. Quello che devi fare è usare UIImageView, che è una sottoclasse UIView specifica per la visualizzazione delle immagini, e aggiungerla alla parte posteriore della gerarchia della vista.

+0

Grazie. Capisco. Hai qualche sapienza sulla questione che ho postato come commento al codice di Jesse Naugher? – CodeGuy

5

self.view.layer.contents = (id) [UIImage imageNamed: @ "background.png"]. CGImage;

Motivo: ogni vista è supportata da una classe CALayer. Secondo la documentazione su CALayer:

 
contents 
An object that provides the contents of the layer. Animatable. 


@property(retain) id contents 
 
Discussion 
A layer can set this property to a CGImageRef to display the image as its contents. The default value is nil. 

E sì, questa proprietà è animabile. Ciò significa che su questo livello possono essere eseguite belle transizioni basate su CoreAnimation. Nota: fare attenzione se si supportano più orientamenti.

+1

Grazie per aver postato questo, esattamente quello che stavo cercando. – Bradford2000

2

una soluzione rapida per questo ...

let backgroundImageView = UIImageView(image: UIImage(named: "backgroundImage")) 
backgroundImageView.frame = view.frame 
backgroundImageView.contentMode = .ScaleAspectFill 
view.addSubview(backgroundImageView) 
view.sendSubviewToBack(backgroundImageView) 
1

Soluzione per Swift 3,0

self.view.backgroundColor = UIColor(patternImage: UIImage(named: "home02.png")!)