[英]Animating UICircularProgressView
我正在使用UICircularProgressView並將其更改為我喜歡的。 初始化很清楚,但我還是會發布它:
UICircularProgressView *wheelProgress = [[UICircularProgressView alloc]initWithFrame:CGRectMake(someFrame)];
然后我將正確的進度CGFloat between 0-1
設置為CGFloat between 0-1
CGFloat progress = .3; // example
[self.wheelProgress setProgress:progress];
這工作得很好,並且看起來不錯,但是我真的想以某種方式對其進行動畫處理。 到目前為止,我還沒有制作動畫,所以我的第一種方法是
for(tempProgress =! progress){
incrementing tempProgress
setting tempProgres to progressView
}
這當然很丑陋,並且阻止了其他所有事情。
我想實現的是從0到最終值的線性動畫。
我看過: 動畫教程
並想到了這樣的事情:
CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration: 1];
wheelProgress.progress = (progress) ? progress : 0.0;
[UIView commitAnimations];
但這不起作用
任何想法我需要在這里解決?
預先感謝塞巴斯蒂安
您正在使用的進度視圖未設置為將進度作為可設置動畫的屬性。 這樣做非常復雜,我不確定這是否是您要尋找的。
如果是這樣,我認為您需要執行以下操作(我自己還沒有做過,這只是基於我已閱讀的文檔和書籍):
CALayer
和drawInContext
而不是drawRect
progress
成為圖層上的屬性(使用@dynamic
而不是@synthesize
actionForKey:
並為鍵@"progress"
返回CABasicAnimation
可以在一些SO問題中找到此類示例: 在這里和這里應該可以幫助您入門,或者至少習慣了可以使用的搜索詞。 這看起來像是一個很好的教程,用於使用圖層在餅圖中繪制動畫切片,與從UICircularProgressView開始相比,這可能更接近您想要的內容。
或者,您可以改為使用NSTimer來實現此目的,該方法每隔1/60秒增加一次進度值,直到達到所需值為止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.