Строка
[string drawAtPoint:CGPointMake(50, 50) withFont:[UIFont systemFontOfSize:14]];
должна находиться в методе drawRect:
представления.
Это потому, что перед вызовом drawRect:
прямоугольник передается в качестве аргумента drawRect:
стерто.Поэтому, если вы попытаетесь сделать пользовательское рисование где-либо, кроме метода drawRect:
представления, то нарисованный вами материал будет стираться всякий раз, когда вызывается drawRect:
.(Не говоря уже о том, что вызов drawAtPoint:
не имеет смысла, если не выполняется кодом внутри UIView.)
Вам потребуется создать собственный подкласс UIView
, и этому подклассу потребуется пользовательский drawRect:
метод.Если вы все еще хотите, чтобы контроллер представления был субъектом, ответственным за принятие решения о том, какая строка должна быть нарисована и как, вы должны дать своему подклассу UIView метод, подобный
- (void)addString:(NSString *)string atPoint:(CGPoint)point withFont:(UIFont *)font;
Этот метод может хранить эту информацию, например, три NSMutableArray
s (одна из строк, одна из точек и один из шрифтов) и увеличивают счетчик количества строк, которые были добавлены.Затем метод вашего представления drawRect:
может нарисовать строки, описанные в этих массивах.Чтобы добавить строку, ваш контроллер представления просто вызывает addString:atPoint:withFont:
в вашем представлении.