0

我有一个带有固定图像的 UIImageView。我想在顶部添加第二个 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

您必须使用NOin指定不透明,UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), NO, 0.0);否则生成的图像中将没有 alpha 通道 => 它将具有黑色像素而不是透明像素。

还:

  • 您不需要在绘制之前清除上下文,因为它已经被清除了。

  • 您不需要推送和弹出上下文,因为您不嵌套不同的上下文。

于 2013-07-18T09:20:48.687 回答