2012-11-15 15 views
13

C'è un modo per impostare la stessa immagine di sfondo per tutte le viste?iOS imposta il colore di sfondo per tutti i viewcontroller di self.view

Impostazione dello stesso sfondo in tutti i metodi viewDidLoad:. Non è bello

+0

E 'solo una riga di codice, basta copiare e incollare. Quante viste hai? – woz

+0

Passare attraverso tutte le sottoview e applicare lo sfondo è l'unico modo che riesco a pensare. – chrislhardin

+0

sei sicuro di non voler impostare il colore di sfondo in trasparenza e impostare il colore una sola volta per la vista del contenitore? –

risposta

3

Sì, utilizzando UIAppearance in iOS5 +:

[[UIView appearance] setBackgroundColor:[UIColor redColor]]; 

NOTA: UIView conforme alle <UIAppearance, UIAppearanceContainer> protocolli, ma non segna alcuna proprietà come UI_APPEARANCE_SELECTOR per qualche motivo.

+17

true, ma questo imposterà lo sfondo per tutte le sottoview che suddividono UIView (quasi tutto) inclusi pulsanti, etichette, ecc ... – jimpic

0

Non credo che questa sia una buona idea, ma se si vuole veramente fare questo, si potrebbe fare qualcosa di simile:

- (void)setBGColor:(UIColor *)color forAllSubviewsOf:(UIView *)view 
{ 
    [view setBackgroundColor:color]; 
    for (UIView *sub in view.subviews) 
     [self setBGColor:color forAllSubviewsOf:sub]; 
} 
8

È possibile creare una classe personalizzata, chiamiamolo un TemplateView, che è una sottoclasse di UIView. Quindi utilizzando xib/storyboard selezionare la vista controller e il controllo identità modifica la proprietà della classe in "TemplateView".

Successivamente, utilizzando un UIA, si modifica il colore di sfondo della vista modello su quello desiderato.

[[TemplateView appearance]setBackgroundColor:[UIColor blueColor]]; 

Ciò cambierà il colore di sfondo di ciascuna vista modello nel progetto. Penso che sia una soluzione migliore rispetto

[[UIView appearance] setBackgroundColor:[UIColor redColor]]; 

perché non cambiamo lo sfondo di tutto ciò, solo la nostra classe personalizzata. Spero che possa essere d'aiuto.

+0

Questa è una risposta molto migliore rispetto alla risposta accettata. Dare uno sfondo a tutte le UIViews produrrà molti effetti collaterali inaspettati. – StijnSpijker

Problemi correlati