[英]IOS/Objective-C: Convert standard UIColor to CGColor
I have set a color in an NSUserDefault in another class and and now want to convert it to a CGColor for display. 我在另一个类的NSUserDefault中设置了一种颜色,现在想将其转换为CGColor进行显示。 I can convert an actual UIColor to a CGColor.
我可以将实际的UIColor转换为CGColor。 But I'm having trouble converting a UIColor stored in a variable to a 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
Can anyone suggest the right way to do this? 有人可以建议正确的方法吗?
Note: I did not save a cgcolor in the userdefaults due to the need to bridge 注意:由于需要桥接,我没有在userdefaults中保存cgcolor
Replace 更换
circleColor = [[myColor] CGColor];//does not work
with 与
circleColor = myColor.CGColor;
EDIT 编辑
If you haven't saved your UIColor
in NSUSerDefaults
check this answer for an example on how to correctly store and retrieve it. 如果尚未将
UIColor
保存在NSUSerDefaults
请检查此答案以获取有关如何正确存储和检索它的示例。
You can't save UIColor object in NSUserDefaults directly. 您不能将UIColor对象直接保存在NSUserDefaults中。
try to archive object to get data and save the data like this: 尝试归档对象以获取数据并保存数据,如下所示:
UIColor *color = [UIColor redColor];
NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject:color];
[[NSUserDefaults standardUserDefaults] setObject:colorData forKey:@"ColorKey"];
And when you need the color firstly you should get NSData object from User Defaults and then create UIColor object like this 当您首先需要颜色时,应从“用户默认值”中获取NSData对象,然后创建如下的UIColor对象
NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"ColorKey"];
UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];
I think you haven't create myColor
object in this line. 我认为您尚未在这一行中创建
myColor
对象。
UIColor* myColor = [[NSUserDefaults standardUserDefaults] objectForKey:myColor];
struct CGColor* circleColor = nil;
First initialise that object then assign on that object with your user defaults
then proceed accordingly. 首先初始化该对象,然后使用您的
user defaults
分配给该对象,然后进行相应处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.