作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 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 到最终值的线性动画。
然后想到了这样的东西:
CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration: 1];
wheelProgress.progress = (progress) ? progress : 0.0;
[UIView commitAnimations];
但不知何故这不起作用..
有什么我需要解决的问题吗?
提前致谢塞巴斯蒂安
最佳答案
您正在使用的进度 View 未设置为将进度设置为动画属性。这样做非常复杂,我不确定这是否是您要找的。
如果是,我认为您需要执行以下操作(我自己没有这样做,这只是基于我阅读的文档和书籍):
CALayer
和 drawInContext
而不是 drawRect
progress
成为图层的属性(使用 @dynamic
而不是 @synthesize
actionForKey:
并为键@"progress"
返回一个CABasicAnimation
这方面的例子可以在一些 SO 问题/答案中找到:here和 here应该让您开始或至少习惯可以使用的搜索词。 This看起来像是使用图层在饼图中绘制动画切片的一个很好的教程,这可能比从 UICircularProgressView 开始更接近您想要的。
或者,您可以使用 NSTimer 来实现它,它每 1/60 秒增加一次进度值,直到它达到您想要的值。
关于iphone - 动画 UI CircularProgressView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10294804/
我正在使用 UICircularProgressView并根据我的喜好进行了更改。初始化很清楚,但我还是会发布它: UICircularProgressView *wheelProgress = [[
我是一名优秀的程序员,十分优秀!