Получить контекст UIView без использования метода drawrect - PullRequest
2 голосов
/ 05 июля 2011

Мне нужно рисовать в своем пользовательском интерфейсе без использования метода drawrect, но я не знаю, как получить динамический графический контекст в любой момент времени?

Например: мне нужно добавить строку, когда пользователь выбрал строку добавления из всплывающего окна на моей панели инструментов.

Ответы [ 2 ]

5 голосов
/ 05 июля 2011

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

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

Альтернативный

Вы можете использовать представление изображениядля этого.Вы можете сделать это,

UIGraphicsBeginImageContext(imageView.frame.size);
[imageView.image drawInRect:CGRectMake(0, 0, imageView.frame.size.width, imageView.frame.size.height)];
/* Draw line here */
imageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Таким образом, у вас не будет состояния, но вы просто добавите строку к изображению.

2 голосов
/ 05 июля 2011

Ваше мнение имеет без графического контекста за пределами drawRect:.Вы не можете выполнять произвольные вызовы рисования за пределами drawRect: и сохранять их.

Если вам необходимо динамически добавлять линии и т. Д. В представление, сначала необходимо сохранить строки в массиве или другой структуре, а затемПовторите эту структуру внутри drawRect: и нарисуйте каждый элемент.

В качестве альтернативы, сделайте каждую строку самим пользовательским представлением (или слоем) и добавьте ее в качестве подпредставления.

...