我已经在另一个类的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。
发布于 2018-03-21 20:49:56
不能将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];发布于 2018-03-21 20:40:49
替换
circleColor = [[myColor] CGColor];//does not work使用
circleColor = myColor.CGColor;编辑
如果您还没有将UIColor保存在NSUSerDefaults中,请检查this answer以获得如何正确存储和检索它的示例。
发布于 2018-03-21 20:44:46
我认为您还没有在这一行中创建myColor对象。
UIColor* myColor = [[NSUserDefaults standardUserDefaults] objectForKey:myColor];
struct CGColor* circleColor = nil;首先初始化该对象,然后使用您的user defaults对该对象进行赋值,然后进行相应的操作。
https://stackoverflow.com/questions/49416053
复制相似问题