动画完成后隐藏UIProgressView

时间:2015-06-10 20:08:19

标签: ios swift animation cloudkit uiprogressview

我正在使用CKOperation在云套件中保存记录数组如下&用进度视图显示进度。

    let saveOperation = CKModifyRecordsOperation(recordsToSave: ckRecord, recordIDsToDelete: nil)

    saveOperation.perRecordProgressBlock = {
        record, progress in
        if progress >= 1 {
            self.completedRecord.addObject(record)
            let totalSavedRecord = Double(self.completedRecord.count)
            let totalProgress = totalSavedRecord / self.totalStudent
            let percentageProgress = Float(totalProgress * 100)
            progressView.setProgress(percentageProgress, animated: true)

            println(progress)
            println(progressView.progress)
            println(percentageProgress)

        }
    }

我想隐藏进度视图,当它达到100%&动画完成。

目前我快速达到百分比进度到100.0但进度视图动画发生了一些延迟。如果我在percentageProgress达到100.0时隐藏,那么我将永远不会看到任何动画。

进展值始终为1.0。

progressView.progress的值在整个过程中也是1.0。

我想再次展示从0%到100%的完整动画。然后才隐藏进度视图。

2 个答案:

答案 0 :(得分:0)

CloudKit回调块在后台线程上执行。当您更新UI时,您应该在主线程上执行此操作。否则你会看到像这样的奇怪延迟。尝试将代码包装在这样的块中:

NSOperationQueue.mainQueue().addOperationWithBlock {
   progressView.setProgress(percentageProgress, animated: true)
}

答案 1 :(得分:0)

这对我有用。只需在处理完成后调用此函数即可。

func resetProgressView() {
    let TIME_DELAY_BEFORE_HIDING_PROGRESS_VIEW: UInt32 = 2
    // Wait for couple of seconds so that user can see that the progress view has finished and then hide.
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
        sleep(TIME_DELAY_BEFORE_HIDING_PROGRESS_VIEW)
        dispatch_async(dispatch_get_main_queue(), {
        self.progressView.setProgress(0, animated: false)     // set the progress view to 0
        })
    })
}