Когда вызывается drawRect? - PullRequest
       13

Когда вызывается drawRect?

9 голосов
/ 16 марта 2010

У меня есть некоторый пользовательский код для рисования в drawRect, который также выполняет некоторые вычисления размеров.

Когда это самое раннее, я могу быть уверен, что этот код был загружен, например, если я хочу изменить размер контейнера соответственно?

Ответы [ 4 ]

3 голосов
/ 16 марта 2010

-[NSView viewWillDraw] - разумное место для раскладки в последнюю минуту.

2 голосов
/ 16 марта 2010

У меня есть некоторый пользовательский код рисования в drawRect, который также выполняет некоторые вычисления размеров.

Когда это самое раннее, я могу быть уверен, что этот код был загружен, например, если я хочу изменить размер контейнера соответственно?

Объект не может существовать, пока его класс полностью не загружен. Если у вас есть экземпляр, класс, к которому он относится, полностью загружен, потому что у вас не было бы экземпляра этого класса, если бы его не было.

Что касается того, когда он вызывается: он вызывается, когда вам нужно рисовать. Обычно это происходит как часть цикла событий, если что-либо помечало представление как нужное отображение. Можно напрямую настроить отображение NSView, но, насколько я могу судить, это невозможно для UIViews.

Итак, если вам нужно что-то сделать с ним до того, как ему об этом сообщат, либо сделайте это сразу после его создания, либо, если вы собираетесь установить представление как нужное для отображения, сделайте это до того, как вы это сделаете.

1 голос
/ 16 марта 2010

Непосредственно перед отображением вида или при вызове

[aView setNeedsDisplay];
0 голосов
/ 17 марта 2010

Я только что создал свое первое приложение customView. Это был один из моих вопросов. мой метод drawRect был вызван один раз при создании моего окна (или воссоздании). И миллионы раз при изменении размера моего окна.

...