Прозрачный фон в CoreGraphics

Я пытаюсь получить прозрачный фон в CG, но он продолжает выделяться черным.

У меня есть следующий код:

- (id)initWithFrame:(CGRect)frame {
    if ((self = [super initWithFrame:frame])) {
        DLog(@">>> Alloc: DrawingCanvas [0x%X]", (unsigned int)self);
        [self setOpaque:NO];
        [self setBackgroundColor:[UIColor clearColor]];
    }
    return self;
}

- (void) drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGRect frame = rect;
    int counter = 3;

    CGContextClearRect(context, frame);
    CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
    CGContextFillRect(context, frame);
}

Как я могу получить этот код для прозрачного фона?

Ответ 1

С этой настройкой и пока вы не установите clearsContextBeforeDrawing в НЕТ, фон уже должен быть прозрачным при вызове метода drawRect:. Удалите CGContextClearRect и другие вызовы рисования.

Ответ 2

Вы можете просто удалить эти строки:

CGContextClearRect(context, frame);
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextFillRect(context, frame);

Пока вы установите opaque в NO и clearColor как backgroundColor, все должно быть хорошо.

Будьте осторожны при рисовании, так как ваш другой код чертежа может полностью заполнить фон (позаботьтесь о [path fill] вещах в контексте без обрезки).

Ответ 3

У меня была эта же проблема, и решение заключалось в том, чтобы установить свойство backgroundColor UIView, которое я рисовал, из родительского класса представления. Мне не нужен какой-либо код для очистки фона в классе UIView, где происходит рисунок.

myDrawingView.backgroundColor = [UIColor clearColor];