在视图出现的控制器的 viewWillAppear
中更新你的颜色。设置断点以确保代码被调用并且所引用的视图不是 nil
。
如果你只想要“保存”这种颜色而不显示它,可以使用 NSUserDefaults
。你只能存储原始类型,所以你可以例如这样做。
[[NSUserDefaults standardUserDefaults] setObject:@"0,0.675,0.929" forKey@"savedColor"];
NSString *colorString = [[NSUserDefaults standardUserDefaults] objectForKey:@"savedColor"];
NSArray *c = [colorString componentsSeparatedByString:@","];
CGFloat r = [c[0] floatValue];
CGFloat g = [c[1] floatValue];
CGFloat b = [c[2] floatValue];
UIColor *color = [UIColor colorWithRed:r green:g blue:b alpha:1];
或许更好的方式是更明确、更简洁。
[[NSUserDefaults standardUserDefaults] setObject:
@{@"red" : @0, @"green" : @0.675, @"blue" : @0.929} forKey:@"savedColor"];
NSDictionary *c = [[NSUserDefaults standardUserDefaults] objectForKey@"savedColor"];
UIColor *color = [UIColor
colorWithRed:c[@"red"] green:c[@"green"] blue:c[@"blue"] alpha:1];
现在把所有内容放入方便方法中:
-(void)saveColorToUserDefaults:(UIColor*)color withKey:(NSString*)key {
CGFloat red, green, blue, alpha;
[color getRed:&red green:&green blue:&blue alpha:&alpha];
[[NSUserDefaults standardUserDefaults] setObject:
@{@"red": @(red), @"green" : @(green), @"blue" : @(blue), @"alpha" : @(alpha)}
forKey: key];
}
-(UIColor*)colorFromUserDefaultsWithKey:(NSString *)key {
NSDictionary *c = [[NSUserDefaults standardUserDefaults] objectForKey@"savedColor"];
return = [UIColor colorWithRed:c[@"red"] green:c[@"green"]
blue:c[@"blue"] alpha:c[@"alpha"]];
}
QuartzCore
。 - return true