Jednym ze sposobów, w jaki korzystałem przy innych projektach, jest utworzenie pliku ProjectStyle.h, który ma # definicje niestandardowych kolorów i innych stałych związanych z stylem. Wystarczy go zaimportować.
Coś jak:
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]
Można też mieć odpowiedni plik .m jeśli chciał stworzyć stałe wystąpień niektórych UIColor lub UIFont przedmiotów, coś jak
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;
}
A potem oczywiście odsłonić te w nagłówku
Inną rzeczą, która podoba mi się podejście ProjectStyle jest to, że po pewnym czasie będziesz chciał więcej niestandardowych rzeczy niż jus t kolory - niestandardowe czcionki, niestandardowa linia i cienie. Posiadanie klasy stylowej lub nagłówka do umieszczenia wszystkich tych elementów daje jedno miejsce do sprawdzenia, jakie niestandardowe elementy zostały już zdefiniowane dla różnych rzeczy, i bardzo oczywiste #import dla późniejszych programistów do śledzenia scentralizowanej oraz niestandardowej informacji .
Po umieszczeniu niestandardowych elementów w kategoriach kończy się to dostosowywaniem rozłożonym na kilka kategorii, a także możliwością (najczęściej zdalną) kolizji nazwy kategorii z bibliotekami innych firm.
Sesja WWDC 2012 216 prezentuje bardzo podobne podejście, jeśli ktokolwiek jest zainteresowany. – MaxGabriel
Podczas korzystania z niektórych stylów podobny wzór wydaje się odpowiedni, zawsze powstrzymałbym się od używania dyrektyw preprocesora do takiego zadania - definicje nie są bezpieczne dla typu, a zatem brzydkie. Dlaczego nie używać fabryki o odpowiednim wyglądzie (jak kolor)? Coś w stylu '[MyAppearance color: @" ultraBlue "]' – Till
#define jest bezpieczne, ponieważ są one prawdziwym kodem, który jest sprawdzany przez analizator statyczny i debugger w taki sam sposób, jak każdy inny kod (np. użyj # definicji, która daje UIColor, ale potrzebuje CGColor, otrzymasz natychmiastowe ostrzeżenie). Edytor również autouzupełnia kod #define, więc autouzupełnianie MY_COLOR.CGColor.Również #define item autouzupełnianie w całości - w twoim przykładzie nadal będziesz musiał wpisać @ "ultraBlue", co pozostawia miejsce na błąd. Przy użyciu metody #define lub factory style powinny łatwo autouzupełnić, aby wyeliminować błąd. –