-[UICIColor colorSpaceName]:无法识别的选择器已发送到实例

mis*_*hod 5 user-interface objective-c ios

我在iOS 5应用中创建了几个主题支持类。我的主题存储在plist中,并将它们加载到Theme对象中,该主题在我的应用中用于初始化各种控件。我将颜色存储为主题中的字符串,然后使用此代码将它们转换为UIColor:

UIColor* color = [UIColor colorWithCIColor:[CIColor colorWithString:@"0.5 0.5 0.5 1.0"]];
Run Code Online (Sandbox Code Playgroud)

这对于大多数控件都可以正常工作,但是当我尝试像这样设置导航栏的色调颜色时:

//navigation bar
[self.navigationController.navigationBar setTintColor:color];
Run Code Online (Sandbox Code Playgroud)

我得到这个例外:

-[UICIColor colorSpaceName]: unrecognized selector sent to instance
Run Code Online (Sandbox Code Playgroud)

当我不使用CIColor初始化颜色时,例如:

UIColor* color = [UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0];
[self.navigationController.navigationBar setTintColor:color];
Run Code Online (Sandbox Code Playgroud)

一切都很好。

任何线索是什么原因造成的?我找不到有关UICIColor的太多信息,但是我正在猜测,因为UIColor只是CGColor或CIColor之上的包装,因此在实现上存在差异。

小智 -1

UIColor定义在iOS 2.0,因为[UIColor colorWithCIColor]转换为iOS5.0,我认为苹果转换错误,你可以使用下面的代码:

    CIColor *ci_ = [CIColor colorWithString:colorString];
    UIColor *color = [UIColor colorWithRed:ci_.red green:ci_.green blue:ci_.blue alpha:ci_.alpha];
    // UIColor *color = [UIColor colorWithCIColor:[CIColor colorWithString:colorString]];
Run Code Online (Sandbox Code Playgroud)

  • 这完全没有意义。 (3认同)