2014-11-27 20 views
0

Я пытаюсь нарисовать прозрачный круг UIView. Основываясь на answer на этом вопросе, я решил сделать подкласс UIView под названием PartialTransparentView, чтобы создать анимирующий прозрачный круглый вид.Рисование круговой прозрачный вид внутри UIView

У меня возникли проблемы в методе drawRect в реализации этого подкласса, чтобы получить прозрачный вид рисования, чтобы на самом деле отображаться как круговой, а не прямоугольник по умолчанию. Основываясь на следующем коде и предложениях от этого answer, я должен сначала установить контекст, а затем заполнить цвета позже. Однако даже после нескольких других перестановок кода он все еще не работает. Любой совет будет очень полезен!

- (void)drawRect:(CGRect)rect 
{ 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [backgroundColor setFill]; 
    UIRectFill(rect); 

    for (NSValue *holeRectValue in rectsArray) { 

     CGRect holeRect = [holeRectValue CGRectValue]; 
     CGContextAddEllipseInRect(context, holeRect); 
     CGRect holeRectIntersection = CGRectIntersection(holeRect, rect); 

     [[UIColor clearColor] setFill]; 
     UIRectFill(holeRectIntersection); 
    } 

} 

ответ

1

Вам нужно изменить режим смешивания перед удалением ваших кругов:

CGContextSetBlendMode(context, kCGBlendModeClear) 
+0

Спасибо за предложение. Я добавил 'CGContextSetBlendMode (контекст, kCGBlendModeClear);' прямо перед 'CGContextAddEllipseInRect (context, holeRect);' как было предложено, но он не работает. В качестве меры предосторожности я также пробовал такие места, как сразу после получения контекста, но он также не работает. Не могли бы вы немного разобраться в ответе? Спасибо! – daspianist

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