пользовательский вид рисует прямоугольник - PullRequest
1 голос
/ 20 октября 2011

У меня есть пользовательское представление со следующим методом drawRect

- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    float w = rect.size.width;

    CGContextSetFillColorWithColor(ctx, [UIColor blackColor].CGColor);
    CGContextAddArc(ctx, w / 2, w / 2, w / 2 - 10,  0, 2 * M_PI, 0); 
    CGContextDrawPath(ctx, kCGPathFill);

}

Я ожидаю увидеть черный круг, однако по какой-то причине он вместо этого рисует черный прямоугольник. Я думаю, что весь вид просто наполняется черным. Где проблема?

Ответы [ 3 ]

2 голосов
/ 20 октября 2011

Возможно, ваше представление backgroundColor также является черным (что является значением по умолчанию для непрозрачных представлений)?

Кроме того, не следует предполагать, что параметр rect охватывает весь вид, это может быть толькочасть представления, помеченная как нуждающаяся в перерисовке.Вместо этого вы должны основывать свои геометрические расчеты на представлении bounds.

2 голосов
/ 20 октября 2011

Вам нужно добавить ....

[super drawRect:rect];

в качестве первой строки, тогда будет отображаться фон в соответствии со свойством фона views, ИЛИ, если вы предпочитаете, вы можете заполнить контекст фоном.Раскрась себя, я предпочитаю первое.

1 голос
/ 20 октября 2011

Может быть, если вы обрежете его, он будет иметь правильный размер?

 CGContextClip(context);

(Почему вы не используете CGMutablePathRef кстати?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...