Je crée une application de dessin. Au début, mon dessin est lisse. Quand je dessine une bande de cercles pendant une longue période, mon dessin commence à devenir énervé. Peut-être est-ce le fait qu'un tableau ne peut pas gérer trop de points?Pourquoi mon dessin est-il à la traîne après un long dessin?
DV.swift:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
lastPoint = touches.first!.locationInView(self)
self.setNeedsDisplay()
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
var newPoint = touches.first!.locationInView(self)
lines.append(Line(start: lastPoint, end: newPoint))
lastPoint = newPoint
self.setNeedsDisplay()
}
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
var veryFirstPoint = touches.first!.locationInView(self)
lines.append(Line(start: lastPoint, end:veryFirstPoint))
self.setNeedsDisplay()
}
override func drawRect(rect: CGRect) {
var context = UIGraphicsGetCurrentContext()
CGContextBeginPath(context)
for line in lines {
CGContextMoveToPoint(context,line.start.x , line.start.y)
CGContextAddLineToPoint(context, line.end.x, line.end.y)
}
CGContextSetRGBFillColor(context, 0, 0, 0, 1)
CGContextSetLineWidth(context, 5)
CGContextStrokePath(context)
}
Exemple testé sur mon mini 4 iPad: Sur le côté gauche est le nombre déchiquetés après le dessin d'un tas de boucles. le côté droit est les premiers nombres que j'ai dessinés et ils sont lisses.
Cela fonctionne! Le seul problème survient lorsque je dessine pendant un certain temps et que lorsque je commence à dessiner de nouvelles formes, il est en retard d'une seconde (seulement quand je pars de quelques points). Avez-vous une idée de ce que cela pourrait être? –
Mise à jour: j'ai corrigé le problème. Tout ce que je faisais était copier et coller self.setNeedsDisplayInRect dans mes touchesBegan et remplacé les paramètres les deux premiers paramètres avec lastPoint. Merci beaucoup! –