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

时间:2013-11-11 10:38:50

标签: ios uitableview uiimageview uiimage alpha

我通过以下方式在每个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;

但不知何故,我的颜色变得非常奇怪:

enter image description here

当我设置imageView.alpha = 1;颜色再次正常时:

enter image description here

像这样添加图像:

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

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

1 个答案:

答案 0 :(得分:3)

问题可能是颜色与细胞的背景混合在一起。细胞的背景颜色是什么?

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