gpt4 book ai didi

iphone - 动画 UI CircularProgressView

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:51:53 24 4
gpt4 key购买 nike

我正在使用 UICircularProgressView并根据我的喜好进行了更改。初始化很清楚,但我还是会发布它:

UICircularProgressView *wheelProgress = [[UICircularProgressView alloc]initWithFrame:CGRectMake(someFrame)];

然后我设置正确的进度CGFloat between 0-1

CGFloat progress = .3;   // example
[self.wheelProgress setProgress:progress];

这工作得很好,看起来不错,但我真的很想以某种方式为它制作动画。到目前为止我还没有使用过动画,所以我的第一个方法是类似

for(tempProgress =! progress){
incrementing tempProgress
setting tempProgres to progressView
}

这当然是非常丑陋的,并且会阻止其他一切发生。

我想要实现的是从 0 到最终值的线性动画。

我看过:Animation tutorial

然后想到了这样的东西:

CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration: 1];
wheelProgress.progress = (progress) ? progress : 0.0;
[UIView commitAnimations];

但不知何故这不起作用..

有什么我需要解决的问题吗?

提前致谢塞巴斯蒂安

最佳答案

您正在使用的进度 View 未设置为将进度设置为动画属性。这样做非常复杂,我不确定这是否是您要找的。

如果是,我认为您需要执行以下操作(我自己没有这样做,这只是基于我阅读的文档和书籍):

  1. 重写 View 以使用 CALayerdrawInContext 而不是 drawRect
  2. 使 progress 成为图层的属性(使用 @dynamic 而不是 @synthesize
  3. 重写图层子类上的actionForKey: 并为键@"progress"返回一个CABasicAnimation

这方面的例子可以在一些 SO 问题/答案中找到:herehere应该让您开始或至少习惯可以使用的搜索词。 This看起来像是使用图层在饼图中绘制动画切片的一个很好的教程,这可能比从 UICircularProgressView 开始更接近您想要的。

或者,您可以使用 NSTimer 来实现它,它每 1/60 秒增加一次进度值,直到它达到您想要的值。

关于iphone - 动画 UI CircularProgressView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10294804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com