0

Я пытался спасти то, что пользователь может выбрать цвет из Plain Control сегментированной в Objective-C с этим кодом, но он не работаетсохранить BackgroundColor с NSUserDefaults

для сохранения

UIColor *saveColor = changeColor.backgroundColor; 
    NSUserDefaults *Color = [NSUserDefaults standardUserDefaults]; 
    [Color setObject:saveColor forKey:@"saveColor"]; 
    [Color synchronize]; 

для загрузки

NSUserDefaults *color = [NSUserDefaults standardUserDefaults]; 
    UIColor *loadColor = [color objectForKey:@"saveColor"]; 
    [changeColor setBackgroundColor:loadColor]; 
+0

возможно дубликат [Сохранение UIColor, чтобы и загрузка из NSUserDefaults] (http://stackoverflow.com/questions/1275662/saving-uicolor-to-and-loading-from-nsuserdefaults) –

+0

Я дон Думаю, вы можете сэкономить 'UIColor' прямо на' NSUserDefaults'. Вам нужно сначала архивировать его или обернуть его каким-то типом объекта, например 'NSString', используя [saveColor stringFromColor], а затем сохраните его в' NSUserDefaults'. – JaredH

ответ

0

благодаря своей работе я использую это, чтобы сохранить

UIColor *color = self.view.backgroundColor ; 
    const CGFloat *components = CGColorGetComponents(color.CGColor); 
    NSString *colorAsString = [NSString stringWithFormat:@"%f,%f,%f,%f", components[0], components[1], components[2], components[3]]; 
    NSUserDefaults *userDefaults =[NSUserDefaults standardUserDefaults]; 
    [userDefaults setObject:colorAsString forKey:@"color"]; 

и это загрузить

 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
{ 
    NSString *colorAsString = [userDefaults objectForKey:@"color"]; 
    NSArray *components = [colorAsString componentsSeparatedByString:@","]; 
    CGFloat r = [[components objectAtIndex:0] floatValue]; 
    CGFloat g = [[components objectAtIndex:1] floatValue]; 
    CGFloat b = [[components objectAtIndex:2] floatValue]; 
    CGFloat a = [[components objectAtIndex:3] floatValue]; 
    self.view.backgroundColor = [UIColor colorWithRed:r green:g blue:b alpha:a]; 
} 
+0

Ответ на эту ссылку более прост. http://stackoverflow.com/a/1275790/907422 – Bannings

0

Вы не можете просто сохранить UIColor непосредственно NSUserDfaults. Они должны быть экземпляром NSData, NSString, NSNumber, NSDate, NSArray или NSDictionary, для других и настраиваемых объектов, которые вы можете поместить в nsdata путем архивирования.

//For Encoding 

UIColor *bgColor =[UIColor whiteColor]; 
NSData *encodedData =[NSKeyedArchiver archivedDataWithRootObject: bgColor]; 
[[NSUserDefaults standardUserDefaults] setObject:encodedData forKey:@"bgColorKey"]; 

//For decoding 

NSData *decodedData = [[NSUserDefaults standardUserDefaults] objectForKey:@"bgColorKey"]; 
UIColor *bgcolor = [NSKeyedUnarchiver unarchiveObjectWithData:decodedData]; 
self.yourView.backgroundColor = bgcolor; 
Смежные вопросы