如何在带有CGGradient的NSArray中轻松使用CGColor

时间:2011-05-10 09:50:18

标签: iphone ios nsarray uicolor

我有两个UIColor实例,想要使用它们来创建渐变。代码有效,但是当我调用arrayWithObject:构造函数时,它会给我一个警告:

  

警告:语义问题:不兼容   指针类型发送'CGColorRef'   (又名'struct CGColor *')参数   类型'id'

我怀疑存在与警告相关的其他问题(例如泄漏)。这是片段:

   UIColor *startColor, *endColor; 
   // ...
   NSArray *colors = [NSArray arrayWithObjects:
                      startColor.CGColor, endColor.CGColor, nil];
   CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, 
                     (CFArrayRef) colors, NULL);

如何重写代码以安全方式摆脱此警告?

  • 我尝试手动创建一个CGArrayRef,但一段时间后有点讨厌。
  • CGGradientCreateWithColorComponents有效,但我不想将所有颜色组件手动合并到CGFloat components[]

1 个答案:

答案 0 :(得分:24)

试试这个

UIColor *startColor, *endColor; 
   // ...
   NSArray *colors = [NSArray arrayWithObjects:
                      (id)startColor.CGColor, (id)endColor.CGColor, nil];
   CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, 
                     (CFArrayRef) colors, NULL);