2012-07-11 18 views
6

Birlikte aşamalı inşa edilmiş bir UIBezierPath (bir daire) vardır: tamamen doldurmak için ikinci alır ve bunun yanı yolu izler, böylece BazenUIBezierPath - Dolgu animasyon

[circlePath addArcWithCenter:clockCenter radius:radius startAngle:angleRadians endAngle:1.5*M_PI clockwise:YES]; 
... 
[circlePath closePath]; 
[COLOR_CIRCLE setFill]; 
[circlePath fill]; 

, ben dolguyu animasyon istiyorum inşa edildi (saat yönünde). Bunu başarmanın tercih edilen yöntemi nedir? Şu an Core Animation'ı düşünüyorum ama bir dolgu olduğunu umuyorum: Geciken ya da bunlara katılmadığım bir şey. TIA.

+1

Çekirdek Animasyon sunumuna benzer bir şey yaptım. [Örnek kod] (https://github.com/d-ronnqvist/cocoaheads-coreanimation-samplecode/blob/master/PieChartProgress/PieChartProgress/DRPieChartProgressView.m) GitHub'da mevcuttur ve içinde çok sayıda yorum bulunmaktadır. –

+3

Ayrıca [iPhone Core Animation - Circle Çizim] için [yanıtım] 'a bakabilirsiniz (http://stackoverflow.com/a/8021051/608157) (http://stackoverflow.com/q/7991086/608157) –

cevap

2

Bu deneyebilirsiniz:

olan path Şeklinize ayarlanmış bir CAShapeLayer oluşturun. Bu CAShapeLayer'ı, dolu bir ark/daire çizdiğiniz başka bir katman için maske olarak kullanın. Ardından ark/daire yayı açısını 0º ila 360º arasında canlandırın. Bu, istediğiniz etkiyi tahmin edebilir.

Dolguyu istediğiniz gibi hareketlendirmek için "yerleşik" bir yol bulamıyorum. Ancak, darbeyi canlandıracak yerleşik bir yol var:

Bir CAShapeLayer destekli bir UIView kullanın. CAShapeLayer, path özelliğine sahiptir. Ardından katmanın strokeStart ve/veya strokeEnd özelliklerine bir animasyon uygulayabilirsiniz.

+0

Üzgünüm - yolun sadece düz bir daire değil, keyfi bir şekil olduğunu fark ettiniz. Bu cevap keyfi bir şekil içindir. Düz bir daire için maskeleme adımını kaldırmalısınız. David'in cevabını görün – nielsbot