Какова лучшая практика рисования / перемещения текста с помощью кварца? - PullRequest
1 голос
/ 03 декабря 2010

Я новичок в разработке для Iphone, я хочу реализовать простое приложение, чтобы некоторые тексты могли отображаться и перемещаться в виде.Поэтому я использую следующий код для реализации основного цикла:

- (id)initWithCoder:(NSCoder*)coder {

 [NSTimerscheduledTimerWithTimeInterval:(NSTimeInterval)((1.0 / 30.0)) 
    target:selfselector:@selector(mainLoop) userInfo:nilrepeats:TRUE];
 }  
-(void) mainLoop {

// Do some updates
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect {

   // Draw many strings like this ...

    UILabel *label = [[UILabel alloc] init];
label.textColor = color;
label.font = font;
label.text = character;
CGRect rect = CGRectMake(posX, posY, width, height);
[label drawTextInRect:rect];
}

Но когда на экране более 100 текстов, обновление экрана будет медленным и не плавным.Я хочу знать, правильно ли я рисую?Я искал много документов в Интернете, но не нашел ответа.Я нашел много способов нарисовать текст в контексте, но я не знаю, за чем мне следовать.Во-первых, мне нужно использовать UILabel, так как мне нужно установить цвет.Так есть ли проблемы с моим кодом?Должен ли я использовать SubView для рисования, а затем добавить SubSubView к основному виду?или я должен использовать CGLayer?Может ли кто-нибудь сказать мне, что является лучшей практикой для такого рода программ?Спасибо!

1 Ответ

0 голосов
/ 10 декабря 2010

Я выяснил ответ, я использовал NSString: drawInRect вместо UILable: drawTextInRect:

-(void)drawRect:(CGRect)rect  
{    
 // Draw many strings like this ...    
 CGContextSetRGBFillColor (context, 1.0, 1.0, 1.0, 0.5);   
 CGRect rect = CGRectMake(x, y, [self getSizeX], [self getSizeY]); 
 [character drawInRect:rect withFont:[UIFont fontWithName:@"Courier" size:fontSize]];
}
...