簡體   English   中英

動畫UICircularProgressView

[英]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];

但這不起作用

任何想法我需要在這里解決?

預先感謝塞巴斯蒂安

您正在使用的進度視圖未設置為將進度作為可設置動畫的屬性。 這樣做非常復雜,我不確定這是否是您要尋找的。

如果是這樣,我認為您需要執行以下操作(我自己還沒有做過,這只是基於我已閱讀的文檔和書籍):

  1. 重寫視圖以使用CALayerdrawInContext而不是drawRect
  2. 使progress成為圖層上的屬性(使用@dynamic而不是@synthesize
  3. 覆蓋layer子類上的actionForKey:並為鍵@"progress"返回CABasicAnimation

可以在一些SO問題中找到此類示例: 在這里這里應該可以幫助您入門,或者至少習慣了可以使用的搜索詞。 看起來像是一個很好的教程,用於使用圖層在餅圖中繪制動畫切片,與從UICircularProgressView開始相比,這可能更接近您想要的內容。

或者,您可以改為使用NSTimer來實現此目的,該方法每隔1/60秒增加一次進度值,直到達到所需值為止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM