2015-11-11 2 views
2

Я хорошо знаю, что этот вопрос задавался много раз, но, очевидно, что-то другое. Я рисую прямоугольники над гранями в UIImageView, и поэтому мне нужно, чтобы прямоугольники были прозрачными.Как нарисовать прозрачность в UIView?

Насколько я вижу, я выполняю все рекомендации по созданию прозрачного фона в представлении (например, очистите прямоугольник текущего контекста графики). Я также устанавливаю представление, чтобы оно не было непрозрачным и устанавливало 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 напрямую, так как я слышал, что это (обычно) решение.

+0

Возможно, вы могли бы предоставить снимок экрана результата, который вы получаете с помощью этого кода, который вы используете. – beyowulf

+0

Каждый прямоугольник - это просто 'UIView ', который переопределяет' drawRect'. Они добавлены в качестве подзонов ImageView. Они рисуют желтый путь безье. –

+0

Вы не ответили на мой вопрос. См. Мой ответ ниже. – matt

ответ

2

Я предполагаю, что ваш метод init никогда не вызывается (в конце концов, это не назначенный инициализатор), поэтому ваш код никогда не запускается и, следовательно, представления создаются непрозрачными.

+0

Ой, вот и все .. Спасибо. –

Смежные вопросы