web-dev-qa-db-fra.com

Comment dessiner une ligne sur l'iPhone?

Je suis un débutant en programmation iPhone et je voudrais tracer une ligne sur l'écran du téléphone dans le but d'étudier avec Quartz et UIKit.

Comment commencer à dessiner?

43
anish

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

Si vous commencez avec une nouvelle application, le moyen le plus simple sera de commencer avec le modèle "Application basée sur Windows".

Ensuite, 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.

Ouvrez maintenant 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 + Shift + L pour afficher la bibliothèque, et faites glisser un composant "View" sur votre fenêtre, et positionnez-le de sorte que vous puissiez le voir tout. Avec votre nouvelle vue sélectionnée, appuyez sur Cmd + 4 pour faire apparaître l'inspecteur d'identité et sous "Identité de classe", cliquez sur le menu déroulant et choisissez MyView.

Ensuite, vous devez implémenter la méthode drawRect: dans MyView.m, voici un exemple 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);
}

Enregistrez tout et cliquez sur "Build and Run", vous devriez maintenant 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 les parcourir - la plupart des Les fonctions graphiques de base que vous finirez par utiliser commenceront par le terme "CGContext".

147
Tobias Cohen

Vous pouvez également tracer une ligne à l'aide de UIBezierPath. Les éléments suivants traceront une ligne horizontale verticalement centrée:

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