我在另一个类的 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];
关于IOS/objective-C : Convert standard UIColor to CGColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49416053/