2010-05-04 2 views
18

Как вызвать drawRect программно в объективе c?Как вызвать drawRect программно в объекте c

Я хочу вызвать метод drawrect для представления в моем UItabbarcontroller. Как я могу это сделать? Заранее спасибо ..

Редактировать

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

+4

Почему вы хотите, чтобы сделать вид, фактически не поставив его на экране? Кроме того, вы никогда не должны называть 'drawRect:' напрямую (кроме 'super'). – bddckr

+0

Предположим, что я не выбрал первую вкладку после запуска приложения. Из выбора второй вкладки я хочу показать первую вкладку с изменениями содержимого. Изменения в содержимом означают, что я должен изменить UITextfield и т. Д. Теперь то, что происходит, в первый раз, когда текстовое поле моей выбранной вкладки не меняется. Но в следующий раз он изменится. –

ответ

35
[myView.layer display]; 

Сил вид рисовать себя сразу.

[myView setNeedsDisplay: YES]; 

Заставляет пересмотреть вид следующего цикла цикла событий.

Однако, если вам нужно позвонить, даже если это не видно, я думаю, что что-то не так с дизайном вашего класса вида. Вы должны делать только рисование внутри drawRect: ничего другого. И если вы делаете только рисование, почему это происходит, когда представление не видно?

+0

Есть случай, когда вы хотите отобразить его на экране, и именно тогда вы намерены использовать контент представления (например, сделать снимок экрана или такой) и использовать кеш или использовать его в другом месте. В моем случае я хочу снять снимок экрана, который не обязательно просматривается пользователем, и сохранить образ этого вида на диск. – Kalle

+2

Я не уверен, что понимаю это решение. 'UIView' не имеет метода отображения. –

+2

Я тоже смущен по той же причине ... –

4
+0

Спасибо за ответ. Но setNeedsDisplay вызывается только в том случае, если вид виден. В моем состоянии вид не будет виден. Сожалею. мой вопрос вводил в заблуждение. Я отредактировал мой вопрос –

0

view.layer.renderInContext(context: CGContext) может нарисовать содержимое вашего представления в CGContext, например. растровое изображение.

view.snapshotViewAfterScreenUpdates(afterUpdates: Bool) дает моментальный снимок.

1

Swift:

yourView.setNeedsDisplay() 

или

yourView.setNeedsDisplay(newRect) 

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

  • Нет связанных вопросов^_^