首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IOS/Objective:将标准UIColor转换为CGColor

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

Stack Overflow用户
提问于 2018-03-21 20:37:11
回答 3查看 736关注 0票数 0

我已经在另一个类的NSUserDefault中设置了一个颜色,现在我想将它转换为一个CGColor来显示。我可以将实际的UIColor转换为CGColor。但我很难将存储在变量中的UIColor转换为CGColor

代码语言:javascript
复制
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。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-21 20:49:56

不能将UIColor对象直接保存在NSUserDefaults中。

尝试将对象存档以获取数据并保存如下数据:

代码语言:javascript
复制
UIColor *color = [UIColor redColor];
NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject:color];
[[NSUserDefaults standardUserDefaults] setObject:colorData forKey:@"ColorKey"];

当您需要颜色时,首先应该从用户默认值中获取NSData对象,然后创建如下UIColor对象

代码语言:javascript
复制
NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"ColorKey"];
UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];
票数 2
EN

Stack Overflow用户

发布于 2018-03-21 20:40:49

替换

代码语言:javascript
复制
circleColor = [[myColor] CGColor];//does not work

使用

代码语言:javascript
复制
circleColor = myColor.CGColor;

编辑

如果您还没有将UIColor保存在NSUSerDefaults中,请检查this answer以获得如何正确存储和检索它的示例。

票数 2
EN

Stack Overflow用户

发布于 2018-03-21 20:44:46

我认为您还没有在这一行中创建myColor对象。

代码语言:javascript
复制
UIColor* myColor = [[NSUserDefaults standardUserDefaults] objectForKey:myColor];
struct CGColor* circleColor = nil;

首先初始化该对象,然后使用您的user defaults对该对象进行赋值,然后进行相应的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49416053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档