我试图通过传递进度指示器(Double)在指定的时间段内连续调用函数,在这段时间内应该从0变为1。有没有办法在Swift中将这种变化从0变为1?
更新:
以下是我根据https://github.com/danielgindi/ios-charts
更新饼图数据的代码internal func animateDataChange(fromDataSet: PieChartDataSet, toDataSet: PieChartDataSet, progress: Double) -> PieChartDataSet {
var dataEntries: [ChartDataEntry] = []
for i in 0..<fromDataSet.yVals.count {
let yValue = (toDataSet.yVals[i].value - fromDataSet.yVals[i].value) * progress + fromDataSet.yVals[i].value
let dataEntry = ChartDataEntry(value: yValue, xIndex: i)
dataEntries.append(dataEntry)
}
let animatedDataSet = PieChartDataSet(yVals: dataEntries, label: "")
return animatedDataSet
}
我要做的是为两个数据集之间的更改设置动画,并在“progress”参数中反映更改的进度。我需要继续调用函数,直到“progress”= 1。
答案 0 :(得分:2)
我决定使用NSTimer来将计数器从0.01增加到每0.01秒1。我知道这可能不是最有效的方式,但它有效:
mod_pubsub:
access_createnode: pubsub_createnode
## reduces resource comsumption, but XEP incompliant
ignore_pep_from_offline: true
## XEP compliant, but increases resource comsumption
## ignore_pep_from_offline: false
last_item_cache: false
db_type: odbc
plugins:
- "flat"
- "hometree"
- "pep" # pep requires mod_caps
答案 1 :(得分:0)
我会查看CAKeyFrameAnimation
,并在Double
中存储您要设置动画的CATextLayer
值的文字。
您可以设置CATextLayer
的字符串值的动画,以便您可以将一个字符串值设置为另一个字符串值。 (我假设您想要动画的Double将作为字符串呈现在某处。)您可以重复动画,并在指定的时间设置中间值。