1

我在这里遇到了一个问题UIColor

我将从网络服务中获取颜色名称,例如

红色,蓝色,洋红色.......等等。

我如何使用它设置视图的背景颜色。

我只能找到具有这些颜色名称([UIColor redColor], [UIColor blueColor], [UIColor magentaColor])的类方法,但我无法编写以编程方式调用这些方法的代码,因为我得到的颜色名称是动态的。

请帮忙.....

谢谢你。

4

3 回答 3

8

像这样的东西应该工作:

NSString *colorFromWeb = @"Red"; // for example
NSString *selectorName = [NSString stringWithFormat:@"%@Color", [colorFromWeb lowercaseString]];
SEL selector = NSSelectorFromString(selectorName);

if ([UIColor respondsToSelector:selector])
    UIColor *color = [UIColor performSelector:selector]; // Equivalent to [UIColor redColor];
于 2012-11-15T06:39:51.950 回答
3

在这里你可以遵循两种方法。

1)color在这里,您可以通过传递这些即将到来的颜色的名称来调用方法。

正如Scott他的回答中所解释的那样。

  NSString *colorFromWeb = @"Red"; // for example
  NSString *selectorName = [NSString stringWithFormat:@"%@Color", [colorFromWeb lowercaseString]];
  SEL selector = NSSelectorFromString(selectorName);

  if ([UIColor respondsToSelector:selector])
  UIColor *color = [UIColor performSelector:selector]; // Equivalent to [UIColor redColor];

2)。在上述方式中,您可能会遇到一些麻烦,假设您有一些color名称形式 YourWebService不存在,UIColor Class那么在这种情况下,您将无法获得理想的颜色,或者您的应用程序可能会崩溃等。 在这里我建议您应该询问RGB float您的值Webservice Provider。通过这种方式,您可以轻松地通过这些RGB并可以Color使用这些RGB

这是一些演示。

 [UIColor colorWithRed:redRGB green:greenRGB blue:blueRGB alpha:1.0];

您只需 要从 WebService获取redRGB,greenRGB和。blueRGB在这你可以'面对任何Crash

我希望它可以清除给你。

于 2012-11-15T06:46:12.393 回答
1

键值编码机制允许您使用属性名称的字符串表示形式与类的属性进行交互。

NSString* colorString = @"redColor";
UIColor* color = [UIColor valueForKey:colorString];
于 2012-11-15T06:39:34.550 回答