2017-04-06 4 views
0

Je travaille sur une application d'écriture et je suis en utilisant trois variables UIBezierPath:Comment ne pas la course() tous les UIBezierPath dans le tableau

  • [chemins] - un tableau de
  • de TemporaryPath de UIBezierPath - pour aider avec lissage
  • realpath - le chemin qui sera finalement ajouté à la gamme «chemins de

J'utilise un tableau de chemins plutôt qu'un seul chemin parce que j'ai un outil panoramique pour déplacer la lignes autour de l'écran - ils doivent donc être des entités distinctes. Le problème avec ceci est que je dois redessiner le tableau entier chaque tirage de temps (: _) est appelé:

override func draw(_ rect: CGRect) { 
    strokeColor.setStroke() 

    for path in paths{ 
     path.stroke() 
    } 

    realPath?.stroke() 
    temporaryPath?.stroke() 
} 

Cela crée des problèmes de performance après avoir dessiné autour de 20 pistes. Y a-t-il une solution pour ne pas redessiner tout le tableau à chaque fois que draw (: _) est appelé?

Répondre

0

J'ai travaillé cela en passant seulement dans le rectangle du chemin que je dessine à setNeedsDisplay(), en conjonction avec une condition qui dessine seulement les lignes dans le tableau lorsque touchesEnded (_ :), est une solution OK. Cependant, d'autres applications avec des fonctionnalités similaires ne le font évidemment pas, donc je suppose qu'il existe une meilleure solution.

override func draw(_ rect: CGRect) { 
    strokeColor.setStroke() 
    realPath?.stroke() 
    if yesnewline == true{ 
     for path in paths{ 
      path.stroke() 
     } 
     yesnewline=false 
    } 

    temporaryPath?.stroke() 

}