【问题标题】:Using [UIColor colorWithRed:green:blue:alpha:] doesn't work with UITableView seperatorColor?使用 [UIColor colorWithRed:green:blue:alpha:] 不适用于 UITableView 分隔符颜色?
【发布时间】:2011-08-04 05:36:15
【问题描述】:

我正在尝试配置深灰色分隔符颜色。为什么以下什么都不做?

self.tableView.seperatorStyle = UITableViewCellSeperatorStyleSingleLine;
self.tableView.seperatorColor = [UIColor colorWithRed: 127 green:127 blue:127 alpha:1];

返回一个完全没有分隔符的表。

只要我使用 [UIColor blackColor],我就可以得到分隔符。有什么关系?

【问题讨论】:

    标签: iphone cocoa-touch uitableview ios4


    【解决方案1】:

    UIColor 中有两个新方法接受 0 到 255 之间的整数值:

    UIColor(red: Int, green: Int, blue: Int)
    

    UIColor(alpha: Float, red: Int, green: Int, blue: Int)
    

    它不在文档中,但我已经使用过它,它就像一个魅力。

    【讨论】:

      【解决方案2】:

      你需要除以255.0

      因为我几乎不使用介于 1.0 和 0.0 之间的值,所以我创建了一个非常简单的 UIColor 类别,它自己完成看起来凌乱的划分:(来自http://github.com/Jon889/JPGeneral

      //.h file
      @interface UIColor (JPExtras)
      + (UIColor *)colorWithR:(CGFloat)red G:(CGFloat)green B:(CGFloat)blue A:(CGFloat)alpha;
      @end
      
      //.m file
      @implementation UIColor (JPExtras)
      + (UIColor *)colorWithR:(CGFloat)red G:(CGFloat)green B:(CGFloat)blue A:(CGFloat)alpha {
          return [UIColor colorWithRed:(red/255.0) green:(green/255.0) blue:(blue/255.0) alpha:alpha];
      }
      @end
      

      所以你可以这样做(如果你导入我上面链接的类别):

      [UIColor colorWithR:127 G:127: B:127 A:1];
      

      【讨论】:

      • 0-1的值是行业标准吗?你可以打开任何照片编辑应用程序,颜色选择器会给你一个 0-255 的值,不管我很好奇为什么它们会让你做额外的分割工作?
      • @Nick - 这是个好问题。我怀疑这是因为UIColor 需要支持“深颜色”(即深度大于 24 位的颜色,或 32 位带 alpha 的颜色)。当然,这仍然不会改变内置便捷方法(以及十六进制支持)显然对许多开发人员很有帮助的事实!
      • 同样适用于十六进制值。因为有时我们将颜色设为十六进制,为了不手动计算它们,我们可以使用:例如对于#C94557,它将是:[UIColor colorWithRed:(CGFloat)0xC9/0xFF green:(CGFloat)0x45/0xFF blue: (CGFloat)0x57/0xFF alpha:1.0];
      • UIColor 中有两种新方法可以接受 0 到 255 之间的整数值。请参阅下面的答案。
      【解决方案3】:

      您必须将值除以 255,因为范围是 0-1。取 127/255 = 0.49f 并输入。它在那里,只是白色的:)

      编辑:cmets的原因,我添加了一些关于如何解决它的代码:

      -(float)getRGBValue:(int) rgbValue{  
          return rgbValue/255.0;
      ]
      

      【讨论】:

        【解决方案4】:

        因为您的 UIColor 方法需要 0-1 的浮点数,而不是 0-255。您需要将所有 RGB 值除以 255.0,如下所示:

        self.tableView.seperatorColor = [UIColor colorWithRed:127.0f/255.0f green:127.0f/255.0f blue:127.0f/255.0f alpha:1.0f];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-20
          • 1970-01-01
          • 2021-03-14
          • 1970-01-01
          • 2016-11-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多