Tracez une ligne à l'iPhone , à l'Exception
Im essayant de dessiner une ligne.
J'ai écrit un code comme ci-dessous.
UIColor *currentColor = [UIColor blackColor];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, currentColor.CGColor);
CGContextMoveToPoint(context, startingPoint.x, startingPoint.y);
CGContextAddLineToPoint(context,endingPoint.x , endingPoint.y);
CGContextStrokePath(context);
mais cette montre d'exception comme suit
Sat Aug 21 10:47:20 AAA-rrr-Mac-mini.local Test[2147] <Error>: CGContextSetLineWidth: invalid context 0x0
Sat Aug 21 10:47:20 AAA-rrr-Mac-mini.local Test[2147] <Error>: CGContextSetStrokeColorWithColor: invalid context 0x0
Sat Aug 21 10:47:20 AAA-rrr-Mac-mini.local Test[2147] <Error>: CGContextMoveToPoint: invalid context 0x0
Sat Aug 21 10:47:20 AAA-rrr-Mac-mini.local Test[2147] <Error>: CGContextAddLineToPoint: invalid context 0x0
Sat Aug 21 10:47:20 AAA-rrr-Mac-mini.local Test[2147] <Error>: CGContextDrawPath: invalid context 0x0
- Vous n'avez pas réellement un contexte graphique. Faites-vous cela à l'intérieur d'un drawRect: ou de quelque autre endroit aléatoire?
- im en utilisant dans ma propre fonction nommée drawLine:(CGPoint )De:(CGPoint )À
- doit inclure tout cadre ou un fichier de dessin?
- vous devriez toujours utiliser
drawRect:
pour le dessin et l'utilisationsetNeedsDisplay
pour tout vous rafraîchir voulu.
Vous devez vous connecter pour publier un commentaire.
Vous devez également appeler
CGContextBeginPath(ctx);
juste avant l'appel àCGContextMoveToPoint
CGContextClosePath
Vous n'avez pas valide contexte graphique.
UIGraphicsGetCurrentContext()
évidemment retournénil
.Où voulez-vous attirer?
Si vous voulez dessiner sur l'écran, puis vous devez mettre en œuvre la
drawRect:
méthode deUIView
ou un de ses sous-classes et iOS appelez la méthode (par le déclenchement d'une actualisation de la partie de votre écran). Ensuite, vous aurez un valide contexte graphique lors de l'exécution dedrawRect:
.Si vous voulez dessiner sur un écran de pixels de la carte, alors vous devez créer un contexte graphique vous-même avec
UIGraphicsBeginImageContext
ou une fonction similaire.EDIT:
Donc pour dessin dans un UIView, vous devez créer un UIView sous-classe et remplacer drawRect:
Ensuite, vous ouvrez le fichier XIB (que vous avez probablement déjà= dans Interface Builder, ajouter un UIView et de sélectionner MyUIView que la classe (premier champ sur le dernier onglet dans la fenêtre de l'Inspecteur).