2017-04-06 38 views
0

我工作的手寫應用程序,我現在用三種不同的UIBezierPath變量:如何不行程()每UIBezierPath在陣列

  • [路徑] - UIBezierPath的
  • temporaryPath陣列 - 幫助帶有平滑
  • 真實路徑 - 這將最終被添加到「路徑」陣列

我使用的路徑的陣列,而不是一個單一的路徑,因爲我有一個平移工具移動路徑屏幕周圍的線 - 所以他們需要成爲獨立的實體。這裏的問題是,我有整個陣列每次抽獎重繪周圍繪製20路後

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

    for path in paths{ 
     path.stroke() 
    } 

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

這是創建性能問題:(:_)被調用。每次調用draw(:_)時,是否有解決方案不重繪整個數組?

回答

0

我解決了這個問題,只通過我繪製到setNeedsDisplay()的路徑的矩形,以及只在touchesEnded(_ :)時才繪製數組中的行的條件,這是一個很好的解決方案。但是,其他具有相似功能的應用程序顯然不這樣做,所以我認爲有更好的解決方案。

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

    temporaryPath?.stroke() 

}