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
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
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.
true, ma questo imposterà lo sfondo per tutte le sottoview che suddividono UIView (quasi tutto) inclusi pulsanti, etichette, ecc ... – jimpic
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];
}
È 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.
Questa è una risposta molto migliore rispetto alla risposta accettata. Dare uno sfondo a tutte le UIViews produrrà molti effetti collaterali inaspettati. – StijnSpijker
Immagino che sia possibile utilizzare il metodo Swizzling tipo alcune funzioni per modificare tutte le visualizzazioni del colore o delle impostazioni dell'immagine.
check seguente
E 'solo una riga di codice, basta copiare e incollare. Quante viste hai? – woz
Passare attraverso tutte le sottoview e applicare lo sfondo è l'unico modo che riesco a pensare. – chrislhardin
sei sicuro di non voler impostare il colore di sfondo in trasparenza e impostare il colore una sola volta per la vista del contenitore? –