简体   繁体   English

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM