我正在使用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%的完整动画。然后才隐藏进度视图。
答案 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
})
})
}