我已经在另一个类的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
谁能建议正确的方法来做到这一点?
注意:由于需要桥接,我没有在用户默认值中保存 cgcolor
不能直接将 UIColor 对象保存在 NSUserDefaults 中。
尝试存档对象以获取数据并像这样保存数据:
UIColor *color = [UIColor redColor];
NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject:color];
[[NSUserDefaults standardUserDefaults] setObject:colorData forKey:@"ColorKey"];
当你首先需要颜色时,你应该从用户默认值中获取NSData对象,然后像这样创建UIColor对象
NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"ColorKey"];
UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];
替换
circleColor = [[myColor] CGColor];//does not work
跟
circleColor = myColor.CGColor;
编辑
如果您尚未将UIColor
保存在NSUSerDefaults
请查看此答案以获取有关如何正确存储和检索它的示例。
我认为您尚未在此行中创建myColor
对象。
UIColor* myColor = [[NSUserDefaults standardUserDefaults] objectForKey:myColor];
struct CGColor* circleColor = nil;
首先初始化该对象,然后使用user defaults
在该对象上赋值,然后相应地继续。