0

CGFloat colorR = color.red;

它适用于一些构建,但随后我修改了一些与此无关的代码,color并且每次我尝试运行它时突然该行使我的应用程序崩溃,即使在撤消这些更改之后也是如此。

NSLog(@"%@", color.CGColor);
    //<CGColor %p> [<CGColorSpace %p> (kCGColorSpaceDeviceRGB)] ( 0.2 0.5 0.7 1 )
NSLog(@"%f", color.red);
    //-[UIDeviceRGBColor red]: unrecognized selector sent to instance

错误的可用性和(罕见的)正确功能color.red吗?

4

1 回答 1

1

-red 不是 UIColor 的公共实例方法。UIColors 可以在任何颜色空间中表示,并且可能涉及一些转换。要从 UIColor 对象读取原始 RGB 组件,您必须使用以下方法: - (BOOL)getRed:(CGFloat *)red green:(CGFloat *)green blue:(CGFloat *)blue alpha:(CGFloat *)alpha

我不知道为什么 color.red 有时会起作用 - 可能是某些颜色在内部使用该方法的一个类集群实例,而其他时候它们以另一种格式存储。

于 2013-02-19T15:54:08.387 回答