所以我們得到了2個可能的解決方案已經:
- 辛格爾頓含有顏色由Lapinou通過Xeieshan
- 預處理宏
我能想到的3分額外的:
- NSUserDefaults的(工作作爲單例) 您可以將NSUserDefaults中的所有顏色設置爲runonce並將其加載到每個控制器中。 您可以將顏色歸檔到NSData中並直接加載它們或加載一個十六進制字符串並在需要時創建它。
- 創建一個對象,在開始時保存所有的顏色(ButtonPrimary,ButtonSecondary等...像單身人士),並通過您的導航傳遞它。
- 向NSObject添加一個包含所有顏色的類別。他們現在應該到處可用。
我不能說很多表現明智,但我認爲Lapinou建議的單身人士將會做它的工作。只要確保命名這些propertys(LabelTextPrimary,LabelBorderFine,LabelBorderThick等)爲color1,color2,color3就會很快破壞你的脖子。
就我個人而言,我使用1 + 2(我的列表),因爲我可以自由選擇使用全局(nsuserdefault)色彩方案,同時讓顯著navigationcontroller使用它自己的。
如果你想去NSUserDefaults這可能會有所幫助。
- (UIColor *) createColorFromHex:(NSString *)hexString
{
NSString *cleanString = [hexString stringByReplacingOccurrencesOfString:@"#" withString:@""];
if([cleanString length] == 3) {
cleanString = [NSString stringWithFormat:@"%@%@%@%@%@%@",
[cleanString substringWithRange:NSMakeRange(0, 1)],[cleanString substringWithRange:NSMakeRange(0, 1)],
[cleanString substringWithRange:NSMakeRange(1, 1)],[cleanString substringWithRange:NSMakeRange(1, 1)],
[cleanString substringWithRange:NSMakeRange(2, 1)],[cleanString substringWithRange:NSMakeRange(2, 1)]];
}
if([cleanString length] == 6) {
cleanString = [cleanString stringByAppendingString:@"ff"];
}
unsigned int baseValue;
[[NSScanner scannerWithString:cleanString] scanHexInt:&baseValue];
float red = ((baseValue >> 24) & 0xFF)/255.0f;
float green = ((baseValue >> 16) & 0xFF)/255.0f;
float blue = ((baseValue >> 8) & 0xFF)/255.0f;
float alpha = ((baseValue >> 0) & 0xFF)/255.0f;
// NSLog(@"SUCCESS; Color created: %f, %f, %f, %f from %@",red,green,blue,alpha,cleanString);
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
編輯:計算器是搞亂我的號碼:d
又來一功能的Xcode不提供。在開發Android之後,我哭了很多。一切都在代碼中處理,而它應該在UIbuilder中 –