将彩色 UIImageView 添加到 UITableViewCell 时的奇怪行为

Posted

技术标签:

【中文标题】将彩色 UIImageView 添加到 UITableViewCell 时的奇怪行为【英文标题】:Strange behavior when adding colorful UIImageView to a UITableViewCell 【发布时间】:2013-11-11 10:38:50 【问题描述】:

我通过以下方式在每个 UITableViewCell 的左侧附加了一个彩色状态指示器:

CGRect rect = CGRectMake(3, 1, 12, 42);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();

switch (cellState)
        
            case State_OK:
                CGContextSetFillColorWithColor(context,
                                               [[UIColor customGreen] CGColor]);
                break;
            case State_Warning:
                CGContextSetFillColorWithColor(context,
                                               [[UIColor customYellow] CGColor]);
                break;
            case State_Critical:
                CGContextSetFillColorWithColor(context,
                                               [[UIColor customRed] CGColor]);
                break;
            case State_Unknown:
                CGContextSetFillColorWithColor(context,
                                               [[UIColor customGray] CGColor]);
                break;
        

        CGContextFillRect(context, rect);
        UIImageView *imageView = [[UIImageView alloc] initWithImage:UIGraphicsGetImageFromCurrentImageContext()];
        imageView.alpha = 0.7;
        UIGraphicsEndImageContext();

        [cell.contentView addSubview:imageView];

return cell;

但不知怎的,我得到了非常奇怪的颜色:

当我设置imageView.alpha = 1;时,颜色又好了:

像这样添加图片:

cell.imageView.image = UIGraphicsGetImageFromCurrentImageContext();
cell.imageView.alpha = 0.7;

工作得很好!即使是alpha。但我真的不想那样做。

【问题讨论】:

这很有道理,我们让颜色透明(alpha 低于 1),背景颜色会发光。 所有单元格的背景颜色相同(浅灰色)。所以这不可能是原因,因为例如我对每种颜色都有不同的色调。 当然可以,当灰色与上面单元格的颜色混合时会改变颜色。 但是为什么要和上面单元格的颜色混合呢?这就是问题所在。 因为您在设置视图的 alpha 时使 imageview 半透明。如果将其设置为 0.7,则意味着将显示下面 30% 的视图。 【参考方案1】:

问题可能是颜色与单元格的背景混合。单元格的背景颜色是什么?

另一个原因可能是您的单元格图像被重复使用,因此您将图像设置在之前的图像之上。

【讨论】:

所有单元格的背景颜色相同(浅灰色)。所以这不可能是原因,因为例如我对每种颜色都有不同的色调。 这可能是原因,您的颜色与灰色背景混合了 70%,这就是结果 如我所说。我有相同颜色的不同色调。请参阅上面的图片。相同的红色如何与相同的灰色混合两次导致不同的颜色? 重用是问题所在。谢谢。

以上是关于将彩色 UIImageView 添加到 UITableViewCell 时的奇怪行为的主要内容,如果未能解决你的问题,请参考以下文章

将 UIImageView 添加到 UIButton

将 UIImageView 添加到 UITableViewCell?

如何将 UIImageView 添加到导航栏的右侧?

将 UITapRecognizerController 添加到 UIImageView

将 UILabel 添加到 CellForRow 中的 UIImageView

将 UIImageView 添加到单元格边界之外的 UITableViewCell