заставить представление рисовать в какао

У меня есть суперпредставление и подпредставление. Оба на заказ. Во время drawRect суперпредставления я пытаюсь добавить подпредставление, создать изображение из нарисованного представления и удалить подпредставление.

Мой код отлично работает, когда я запускаю его и начинаю с подпредставления, уже нарисованного в суперпредставлении. Кажется, что добавление подвида (во время drawRect) не рисует его сразу, ему нужно дождаться следующего drawRect.

Как добавить подвид и заставить его немедленно рисовать?


person joels    schedule 10.07.2010    source источник
comment
Было бы полезно, если бы вы показали код, который вы используете.   -  person apaderno    schedule 10.07.2010
comment
mediafire.com/?zmzn5dkzfwz   -  person joels    schedule 10.07.2010


Ответы (2)


Во-первых, если вы обнаружите, что форсируете отображение, вы почти наверняка делаете что-то не так.

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

В-третьих, что вы на самом деле пытаетесь сделать? Широкое, упрощенное описание, пожалуйста. Мне кажется, у вас проблемы с базовым подходом к вашей цели, поэтому, если вы опишете его за пределами очень узкого круга того, что не работает для вас, мы могли бы предложить лучший (и, возможно, более простой) вариант. решение.

Наконец, в прямом ответе на ваш вопрос просто скажите представлению -display, если вы хотите, чтобы оно отображалось немедленно... но я не думаю, что оно будет вести себя так, как вы ожидаете.

person Joshua Nozzi    schedule 10.07.2010
comment
Во-первых, если вы обнаружите, что форсируете отображение, вы почти наверняка делаете что-то не так. Ты прав. Я должен настроить все это в viewWillDisplay и иметь весь код рисования в drawRect. Я попробую это. - person joels; 10.07.2010
comment
Я пытался заставить родительское представление создать дочернее представление, как только оно было нарисовано, выполнить метод в дочернем представлении, а затем удалить дочернее представление. В итоге я просто добавил дочернее представление, установил некоторые реквизиты, чтобы он сам выполнял методы в конце метода drawRect, а затем удалил себя. Спасибо, Джошуа! - person joels; 10.07.2010
comment
Из кода, который вы разместили, похоже, что вы пытаетесь создать изображение родительского представления, а затем наложить какой-либо рисунок на это изображение. Если это так, почему бы просто не создать изображение с -dataWithPDFInsideRect:, заблокировать фокус на этом изображении и рисовать прямо на нем? Зачем обмениваться мнениями и т. д.? - person Joshua Nozzi; 10.07.2010

Используйте [view display], чтобы немедленно нарисовать его.

person Leibowitzn    schedule 10.07.2010
comment
это просто вызовет цикл, если я сделаю это в drawRect. спасибо, хотя - person joels; 10.07.2010