IOS/Objective-C:将标准UIColor转换为CGColor



我已经在另一个类的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在该对象上赋值,然后相应地继续。

最新更新