Ответ 1
С этой настройкой и пока вы не установите clearsContextBeforeDrawing
в НЕТ, фон уже должен быть прозрачным при вызове метода drawRect:
. Удалите CGContextClearRect и другие вызовы рисования.
Я пытаюсь получить прозрачный фон в 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);
}
Как я могу получить этот код для прозрачного фона?
С этой настройкой и пока вы не установите clearsContextBeforeDrawing
в НЕТ, фон уже должен быть прозрачным при вызове метода drawRect:
. Удалите CGContextClearRect и другие вызовы рисования.
Вы можете просто удалить эти строки:
CGContextClearRect(context, frame);
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextFillRect(context, frame);
Пока вы установите opaque в NO и clearColor как backgroundColor, все должно быть хорошо.
Будьте осторожны при рисовании, так как ваш другой код чертежа может полностью заполнить фон (позаботьтесь о [path fill]
вещах в контексте без обрезки).
У меня была эта же проблема, и решение заключалось в том, чтобы установить свойство backgroundColor
UIView, которое я рисовал, из родительского класса представления. Мне не нужен какой-либо код для очистки фона в классе UIView, где происходит рисунок.
myDrawingView.backgroundColor = [UIColor clearColor];