2011-04-02 33 views
5

店加載的backgroundColor -如何存儲和NSUserDefaults的中

-(IBAction) setMyColor:(id)sender{ 

if (sender == yellowButton) { 
    [colorView setBackgroundColor:[UIColor yellowColor]]; 
} 

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
UIColor *strColor = [colorView backgroundColor]; 
[userDefaults setObject:strColor forKey:@"myColor"]; 
[userDefaults synchronize]; 

}

負載 -

- (void)viewDidLoad { 

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
[colorView setBackgroundColor[UIColor [userDefaults objectForKey:@"myColor"]]]; 

[super viewDidLoad]; 

}

,但它無法運行...... 也許問題是'如何從UIView獲取backgroundColor值'?

回答

13

可以使用

//save  
    NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject:color]; 
    [[NSUserDefaults standardUserDefaults] setObject:colorData forKey:@"myColor"]; 

//retrieve 
    NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"myColor"]; 
    UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData]; 

or 

//save 
const CGFloat *components = CGColorGetComponents(pColor.CGColor); 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setFloat:components[0] forKey:@"cr"]; 
[prefs setFloat:components[1] forKey:@"cg"]; 
[prefs setFloat:components[2] forKey:@"cb"]; 
[prefs setFloat:components[3] forKey:@"ca"]; 

//retrieve 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
UIColor* tColor = [UIColor colorWithRed:[prefs floatForKey:@"cr"] green:[prefs floatForKey:@"cg"] blue:[prefs floatForKey:@"cb"] alpha:[prefs floatForKey:@"ca"]]; 
+0

第一個選項爲我工作。謝謝! – 2012-09-06 12:07:57

+0

這幫助了我很多...非常有用的GP方法,因爲NSUserDefaults不能存儲常規對象(有道理 - 您必須像使用其他存儲方法一樣序列化它們)。謝謝! – 2013-11-20 00:48:45

相關問題