2010-12-03 34 views
1

Je suis nouveau dans le développement d'Iphone, je veux mettre en application une application simple que certains textes peuvent être montrés et déplacés dans la vue. Donc, j'utilise le code suivant pour implémenter la boucle principale:Quelle est la meilleure pratique de dessin/déplacement de texte avec Quartz?

- (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]; 
} 

Mais quand il y a plus de 100 texte à l'écran, le rafraîchissement de l'écran sera lent et pas lisse. Je veux savoir si je fais le dessin de la bonne façon? J'ai cherché beaucoup de documents sur le Web mais n'ai pas trouvé la réponse. J'ai trouvé plusieurs façons de dessiner un texte sur le contexte, mais je ne sais pas lequel je devrais suivre. Une chose est, j'ai besoin d'utiliser UILabel car j'ai besoin de définir la couleur. Y a-t-il un problème avec mon code? Devrais-je utiliser une sous-vue pour dessiner, puis ajouter SubView à la vue principale? ou devrais-je utiliser CGLayer? Quelqu'un pourrait-il me dire quelle est la meilleure pratique pour ce genre de programme? Merci!

Répondre

0

J'ai trouvé la réponse, je NSString: drawInRect au lieu de 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]]; 
}