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

Mar*_*man 10 iphone uicolor nsarray ios

我有两个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);
Run Code Online (Sandbox Code Playgroud)

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

  • 我尝试手动创建一个CGArrayRef,但一段时间后有点讨厌.
  • CGGradientCreateWithColorComponents工作,但我不喜欢手动将所有颜色组件合并为一个CGFloat components[]

vis*_*kh7 25

试试这个

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