如何在UIView中绘制透明度?

3

我知道这个问题已经被问了很多次,但很明显有些不同。我正在一个UIImageView上绘制矩形框覆盖在人脸上,所以我需要矩形框是透明的。

据我所见,我正在遵循所有建议来在视图中绘制透明背景(例如清除当前图形上下文的矩形)。我还设置了视图不是不透明的,并将backgroundColor设置为clearColor。还需要其他步骤吗?

-(instancetype)init
{
    self = [super init];
    if ( self ) {
        self.opaque = NO;
        self.backgroundColor = [UIColor clearColor];
        self.clearsContextBeforeDrawing = NO;
    }
    return self;
}

- (void)drawRect:(CGRect)rect {
    UIBezierPath * path = [UIBezierPath bezierPathWithRect:rect];

    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [[UIColor clearColor] setFill];

    CGContextClearRect(ctx, rect);

    [self.rectColor setStroke];
    path.lineWidth = 5.0;
    [path stroke];
}

@end

我需要设置透明背景,但默认情况下此视图显示为黑色。我尝试直接清除CGContext的矩形,因为我听说这通常是解决方案。

我的输出示例


也许你可以提供一张屏幕截图,展示你正在使用的这段代码的结果。 - beyowulf
每个矩形只是一个覆盖drawRectUIView。它们作为ImageView的子视图添加。它们绘制黄色bezier路径。 - Joey Carson
你没有回答我的问题。请看下面的回答。 - matt
1个回答

2
我猜测你的init方法从未被调用(毕竟这不是指定的初始化方法),因此你的代码从未运行,因此视图是不透明的。

哦,就这样了..谢谢。 - Joey Carson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接