Любой возможный способ вызвать drawRect из класса UIViewcontroller? - PullRequest
1 голос
/ 02 октября 2011

У меня есть класс UIViewController, который называется AppController.h, AppController.m. У меня там тысячи строк кода, и это единственная причина, по которой я не проверял это до того, как спросил. Есть ли какой-нибудь возможный способ использовать drawRect в UIViewController? таким образом, мне не нужно было бы создавать больше делегатов, методов и обратных вызовов. Я должен был начать использовать drawRect для обработки своего кода для рисования, но я этого не сделал, и на iPad есть серьезное отставание от основной графики. Итак, пожалуйста, дайте мне знать, если есть какой-либо способ использовать drawRect в UIViewController.

Спасибо!

Ответы [ 3 ]

4 голосов
/ 02 октября 2011

Контроллер представления, естественно, имеет указатель на его представление, поэтому, конечно, вы можете вызвать метод -setNeedsDisplay представления, который заставит платформу вызвать -drawRect: в соответствующее время.Немного сложно понять, что именно вы спрашиваете, хотя ... вы надеетесь сделать фактический рисунок в вашем контроллере вида?Если бы вы попробовали это, вы бы действительно работали против фреймворка - вместо этого переместите код рисования в свой класс представления.

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

вы просто позвоните setNeedsDisplay, и вас попросят сделать ничью в следующий подходящий момент. (читай: не звони drawRect: напрямую)

если вам действительно нужно запрашиваемое поведение, просто позвоните setNeedsDisplay после создания кэшированного растрового изображения или CGImage / UIImage, который обновляется извне (например, в логике вашего контроллера), а затем просто рисуйте это изображение по запросу рисовать.

0 голосов
/ 02 октября 2011

Вы должны (refactor / rewrite and) создать подкласс UIView (не контроллера представления), чтобы делегат этого представления drawRect вызывался с надлежащим контекстом рисования, когда вам нужно сделать какой-либо рисунок. Попытка рисовать без надлежащего контекста рисования может быть мучительно медленной, если это вообще возможно.

Технически, вы можете выделить и создать свой собственный контекст рисования растрового изображения, вставить пользовательский объект с методом drawRect и вызвать его drawRect и context. Но тогда может быть просто быстрее рисовать прямо в пользовательский контекст рисования.

...