2010-12-13 7 views
3

Ich habe Probleme mit meiner UIView Unterklasse 'drawRect: Funktion. Ich benutze CGContextDrawRadialGradient() darin, und es. Wenn der Benutzer meine UIView schleppt, hat es Mühe, mitzuhalten, wenn ich den Farbverlauf einschließe.DrawRect: Geschwindigkeit und CGContextDrawRadialGradient (super langsam?)

Mit Time Profiler sehe ich, dass buchstäblich> 98% meiner Zeit in meiner Unterklasse 'drawRect: Methode ausgegeben wird.

Erstens: Würde ein statisches Bild eines Gradienten schneller sein? Zweitens: Gibt es eine Möglichkeit, dies zu beschleunigen? Kann ich den Farbverlauf irgendwie zwischenspeichern? Es ändert sich nicht viel, aber die Pfade um es herum und das Überschneiden ändern sich, wenn Sie die UIView ziehen.

Wenn jemand von einem allgemeinen Leitfaden weiß, wie man drawRect: Methoden nicht alle CPU-Zyklen zu saugen, wäre das genial.

Antwort

0

Ich habe das gleiche Problem. Eine Lösung besteht darin, einen kleineren Gradienten zu zeichnen und ihn zu vergrößern. Die Ergebnisse sind nicht Pixel perfekt, aber schneller.

Siehe auch die in this answer genannten Ideen.

Verwandte Themen