Рисование в drawRect всегда вызывается, но не всегда производит что-либо - PullRequest
1 голос
/ 01 марта 2012

У меня странная проблема в данный момент. Я генерирую чертеж в UIViewControllers UIView, который вызывает drawRect:, проходит весь процесс кода без сбоев, но ничего не производит. Если я нажимаю на объект пользовательского интерфейса внутри UIView, drawRect перезагружается, и появляется мое изображение.

Единственное, что хорошо для этого - это то, что это происходит каждый раз при первой загрузке, но также и несколько раз позже.

Обычно это работает, поэтому я что-то упускаю, например, функцию перезагрузки / установки?

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextClearRect(context, rect);
CGContextSetRGBFillColor(context, 1, 1, 1, 1.0f);
CGContextFillRect(context, rect);

CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 
CGContextSetLineWidth(context, 5.0);

CGContextMoveToPoint(context, 20, 20);
CGContextAddLineToPoint(context, 40, 40);   
CGContextStrokePath(context);

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Ваш код вызывает -drawRect: напрямую? Если это так, остановите это . Перед вызовом -drawRect: UIView устанавливает контекст рисования так, чтобы все ваши переопределения -drawRect: должны были рисовать. Если вы попытаетесь вызвать этот метод напрямую, контекст рисования не будет настроен правильно, и ваш рисунок окажется в неправильном месте или вообще нигде. Рисунок работает правильно для вас, когда вы позволяете системе управлять чертежом, и в этом случае контекст будет правильно установлен до вызова -drawRect:.

0 голосов
/ 01 марта 2012

Похоже, ваш код drawRect: не вызывается, когда вы ожидаете. Обязательно звоните setNeedsDisplay на свой UIView по мере необходимости.

...