2009-05-13 7 views

Répondre

147

La première étape consiste à définir une sous-classe de UIView, pour créer un espace pour dessiner.

Si vous commencez avec une nouvelle application, la meilleure façon sera de commencer par la « base-fenêtre application "modèle.

Puis allez dans Nouveau fichier et créez une "Classe Objective-C" avec "Sous-classe de" définie sur "UIView", et donnez-lui un nom, par exemple MyView.m.

Maintenant, ouvrez le groupe "Ressources" et double-cliquez sur "MainWindow.xib" pour l'ouvrir dans Interface Builder. De là, vous devriez voir une fenêtre nommée "Fenêtre". Appuyez sur Cmd + Maj + L pour faire apparaître la bibliothèque et faites glisser un composant "Vue" sur votre fenêtre, et placez-le de manière à pouvoir tout voir. Avec votre nouvelle vue sélectionnée, appuyez sur Cmd + 4 pour afficher l'inspecteur d'identité et sous "Identité de classe", cliquez sur la liste déroulante et choisissez MyView.

Ensuite, vous devez mettre en œuvre la méthode drawRect: dans MyView.m, voici quelques exemples de code qui dessine une ligne:

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

    CGFloat red[4] = {1.0f, 0.0f, 0.0f, 1.0f}; 
    CGContextSetStrokeColor(c, red); 
    CGContextBeginPath(c); 
    CGContextMoveToPoint(c, 5.0f, 5.0f); 
    CGContextAddLineToPoint(c, 50.0f, 50.0f); 
    CGContextStrokePath(c); 
} 

Enregistrer tout et cliquez sur « Build and Run », vous devriez voir une courte ligne rouge sur l'iPhone.

Pour plus d'informations sur Core Graphics, consultez la documentation Apple. J'ai également trouvé utile de rechercher des fonctions commençant par CGContext dans la visionneuse de documentation Xcode, et de parcourir celles-ci - la plupart des fonctions Core Graphics que vous finirez par utiliser commenceront par le terme "CGContext".

+0

Merci Tobias .... Il me aide .... –

+56

+1 pour répondre avec le code au lieu de RTFM. – willc2

+0

+1 ça m'a aidé :) –

4

Vous pouvez également tracer une ligne à l'aide de UIBezierPath. Ce qui suit tracez une ligne horizontale à la verticale centrée sur:

- (void)drawRect:(CGRect)rect { 
    CGFloat rectHeight = CGRectGetHeight(rect); 
    CGFloat rectWidth = CGRectGetWidth(rect); 

    UIBezierPath *line = [UIBezierPath bezierPath]; 
    [line moveToPoint:CGPointMake(0, rectHeight/2)]; 
    [line addLineToPoint:CGPointMake(rectWidth, rectHeight/2)]; 

    [[UIColor lightGrayColor] setStroke]; 
    [line stroke]; 
} 
Questions connexes