在指定的时间间隔内在Swift中将Double从0设置为1

时间:2016-01-11 20:56:34

标签: ios swift ios-charts

我试图通过传递进度指示器(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。

2 个答案:

答案 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将作为字符串呈现在某处。)您可以重复动画,并在指定的时间设置中间值。