Un approccio che ho utilizzato su altri progetti è creare un file ProjectStyle.h, che ha #definiti per colori personalizzati e altre costanti relative allo stile. Devi solo importarlo.
Qualcosa di simile:
ProjectStyles.h
#define RED_HEADER_COLOR [UIColor colorWithRed:0.8f green:0.1f blue:0.1f alpha:0.9f]
#define RED_BACKGROUND_COLOR [UIColor colorWithRed:0.9f green:0.3f blue:0.1f alpha:1.0f]
#define PRIMARY_FONT [UIFont fontWithName:@"HelveticaNeue-Bold" size:12.0f]
Si potrebbe anche avere un file .m corrispondente, se si voleva creare istanze costanti di alcuni oggetti UIColor o UIFont, qualcosa di simile
ProjectStyles.m
+ (UIColor *) redHeaderColor
{ return [UIColor colorWithRed:0.8f green:0.1f blue:0.1f alpha:0.9f]; }
+ (UIColor *) redBackgroundColor
{ return [UIColor colorWithRed:0.9f green:0.3f blue:0.1f alpha:1.0f]; }
+ (UIFont *) primaryFont
{
static UIFont *font = nil;
if (font == nil)
font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:12.0f];
return font;
}
E poi, naturalmente, esporre quelli nell'intestazione
L'altra cosa che mi piace di un tipo di approccio ProjectStyle è che dopo un po 'vorrai più cose personalizzate di jus t colori: caratteri personalizzati, linee personalizzate e ombre. Avere una classe Style o un'intestazione per posizionare tutte queste cose ti dà un posto dove cercare quali elementi personalizzati sono già definiti per tutti i tipi di cose, e un ovvio #import per i successivi coder che ti riconducono al tuo pozzo centralizzato di informazioni personalizzate .
Se si inseriscono solo gli elementi personalizzati nelle categorie, si finisce con la personalizzazione distribuita su più categorie e anche la possibilità (principalmente remota) di collisioni di nomi di categorie con altre librerie di terze parti.
fonte
2013-02-17 01:38:05
La sessione 216 del WWDC 2012 presenta un approccio molto simile a questo, se qualcuno è interessato. – MaxGabriel
Quando si utilizza un modello simile al foglio di stile sembra appropriato, vorrei sempre astenermi dall'usare le direttive del preprocessore per tale compito - le definizioni non sono sicure dal punto di vista del tipo e quindi brutte. Perché non utilizzare una fabbrica di attributi di aspetto adeguato (come il colore). Qualcosa come '[MyAppearance color: @" ultraBlue "]' – Till
#define è sicuro, perché finiscono per essere codice reale controllato dall'analizzatore statico e dal debugger allo stesso modo di qualsiasi altro codice (quindi da qualche parte se usa un #define che si traduce in un UIColor, ma ha bisogno di un CGColor riceverai un avvertimento immediato). L'editor completa automaticamente il codice #define, quindi MY_COLOR.CGColor completa automaticamente.Inoltre, #finefine completamento automatico degli elementi - nel tuo esempio dovresti ancora digitare @ "ultraBlue" che lascia spazio per errori. Usando i metodi #define o factory, gli stili dovrebbero completarsi automaticamente per eliminare l'errore. –