web-dev-qa-db-fra.com

Comment dessiner un UIImage ou directement dans -drawRect :?

J'ai un UIImage que je veux dessiner sur un UIView. Mais au lieu de créer un UIImageView et de l'ajouter en tant que sous-vue, je veux écraser -drawRect: et dessine mon UIView directement.

Par exemple, mon code ressemble à:

- (void)drawRect:(CGRect)rect {
    CGContextRef myContext = UIGraphicsGetCurrentContext();

    UIImage *img = [UIImage imageNamed:@"foo.png"];

    // how to draw the directly into the view now?
}
46
HelloMoon

Appel [img drawInRect:rect];.

84
Ole Begemann

BTW, vous ne devez pas charger le fichier image dans la méthode drawRect. Parce que la méthode est appelée chaque fois que la vue doit être mise à jour. Par conséquent, il (bien sûr, la procédure de chargement) peut être appelé plusieurs fois pendant l'exécution. (De plus, la méthode imageNamed d'OS2.x a un bogue - elle n'a pas mis en cache l'image et l'a divulguée.)

Par conséquent, vous feriez mieux de charger le fichier dans la méthode d'initialisation, pas dans drawRect.

30
KatokichiSoft