我在另一个类的NSUserDefault中设置了一个颜色,现在想将它转换为CGColor进行显示。我可以将实际的UIColor转换为CGColor。但我无法将存储在变量中的UIColor转换为CGColor
UIColor* myColor = [[NSUserDefaults standardUserDefaults] objectForKey:myColor];
struct CGColor* circleColor = nil;
circleColor=[[UIColor greenColor]CGColor];//this works
circleColor=[[myColor] CGColor];//does not work
circleColor=[myColor CGColor];//does not work
任何人都可以建议正确的方法吗?
注意:由于需要桥接,我没有在userdefaults中保存cgcolor
您无法直接在NSUserDefaults中保存UIColor对象。
尝试归档对象以获取数据并保存数据,如下所示:
UIColor *color = [UIColor redColor];
NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject:color];
[[NSUserDefaults standardUserDefaults] setObject:colorData forKey:@"ColorKey"];
当你首先需要颜色时,你应该从User Defaults获取NSData对象,然后像这样创建UIColor对象
NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"ColorKey"];
UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];
更换
circleColor = [[myColor] CGColor];//does not work
同
circleColor = myColor.CGColor;
编辑
如果你没有在UIColor
中保存你的NSUSerDefaults
,请查看this answer,了解如何正确存储和检索它。
我想你还没有在这一行创建myColor
对象。
UIColor* myColor = [[NSUserDefaults standardUserDefaults] objectForKey:myColor];
struct CGColor* circleColor = nil;
首先初始化该对象,然后使用user defaults
在该对象上分配,然后相应地继续。