0

固定画像の UIImageView があります。回転させたい 2 番目の UIImageView を上に追加したいと思います。実行時に一番上の画像を作成する必要があります。透明性を処理する場所が見つかりません。それは UIImage または UIImageView にありますか? これまでのところ、上部の UIImageView に黒い背景がありますが、これらの黒いピクセルを通して見たいと思います。コードは次のとおりです (これは、Erica Sadun のCore iOS 6 Developers Cookbookに基づいています)。コントロールの回転にフィードバックを追加するために、ホイールにドットを追加したいと思います。

    float width=200, height=200;

    UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), YES, 0.0);
    CGContextRef context = UIGraphicsGetCurrentContext();
    UIGraphicsPushContext(context);
    CGContextAddRect(context, CGRectMake(0, 0, width, height));
    CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
    CGContextFillPath(context);

    float lineWidth=4;
    CGContextAddEllipseInRect(context,  CGRectInset(CGRectMake(0, 0, width, height), lineWidth, lineWidth));
    CGContextSetLineWidth(context, 4);
    CGContextSetStrokeColorWithColor(context, [[UIColor redColor] CGColor]);
    CGContextStrokePath(context);
    UIGraphicsPopContext();

    dots = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    UIImageView * ivDots = [[UIImageView alloc] initWithImage:dots];
    UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"wheel.png"]];

    [self addSubview:iv];
    [self addSubview:ivDots];
4

1 に答える 1

2

opaque を指定する必要がありますNOUIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), NO, 0.0);そうしないと、結果の画像にアルファ チャネルがなくなります => 透明ではなく黒いピクセルが表示されます。

また:

  • コンテキストは既にクリアされているため、描画する前にクリアする必要はありません。

  • 異なるコンテキストをネストしないため、コンテキストをプッシュおよびポップする必要はありません。

于 2013-07-18T09:20:48.687 に答える