如何在UIView中绘制透明度?

时间:2015-11-11 03:36:22

标签: ios core-graphics

我很清楚这个问题已被多次提出,但显然有些不同。我在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

An example of my output

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

1 个答案:

答案 0 :(得分:2)

我猜测你的init方法永远不会被调用(毕竟,这不是指定的初始化程序),所以你的代码永远不会运行,因此视图创建为不透明。