如何在CGGradient中舒服地使用NSArray中的CGColor

我有两个UIColor实例,并希望使用它们创build一个渐变。 该代码的作品,但它给了我一个警告,当我调用arrayWithObject:构造函数:

警告:语义问题:将'CGColorRef'(又名'struct CGColor *')发送到types为“id”的参数的指针types不兼容

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

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

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

  • 我试图手动创build一个CGArrayRef,但一段时间后,有点讨厌。
  • CGGradientCreateWithColorComponents的作品,但我不喜欢手动合并所有的颜色组件到一个CGFloat components[]

尝试这个

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