0

次の方法で、すべての 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。しかし、私は本当にそのようにしたくありません。

4

1 に答える 1

3

問題は、色がセルの背景と混ざり合っていることです。セルの背景色は何色ですか?

別の理由として、セルの画像が再利用されている可能性があるため、前の画像の上に画像を設定しています。

于 2013-11-11T10:44:04.093 に答える