gpt4 book ai didi

ios - Swift 进度条 completedUnitCount 和 totalUnitCount

转载 作者:行者123 更新时间:2023-12-01 19:36:32 25 4
gpt4 key购买 nike

我不知道我是否很好地理解了 completedUnitCount 和 totalUnitCount,我将向您描述我的问题。

进度条声明:

@IBOutlet weak var progressBar: UIProgressView!
let progress = Progress(totalUnitCount: 5)

这个'5'没有意义,但我只是为了测试进度条的填充。

当我单击下面的按钮时,我想使该按钮消失并使进度条出现在按钮的位置。默认情况下,进度条是隐藏的,按钮是不隐藏的。它运作良好,但问题是因为我想在 completedUnitCount 等于 totalUnitCount 时关闭当前的 VC。
当我选择 5 个卡片组时,我的 completedUnitCount 为 5,因此它等于 totalUnitCount。
它开始填充 progressBar 并在完成之前关闭 VC。
这是我的代码,我认为您不必关注 Realm 的东西,并且从 API 加载的数组中的卡片组和选定的卡片组应该发布在 realmTable 中,并且可以正常工作:
@IBAction func btnDownload(_ sender: Any) {
print("button download pressed")

let realm = try! Realm()

for id in cardsetIds {
for cardset in cardsets {
if id == cardset.id && cardset.cards != "0" {
let newSet = CardsetTable()
newSet.cards = cardset.cards
newSet.size = cardset.size
newSet.title = cardset.title
newSet.id = cardset.id

try? realm.write { realm.add(newSet) }

btnDownload.isHidden = true
progressBar.isHidden = false

progress.completedUnitCount += 1
let progressFloat = Float(self.progress.fractionCompleted)

self.progressBar.setProgress(progressFloat, animated: true)
}
}
}
if progress.completedUnitCount == progress.totalUnitCount {

self.dismiss(animated: true, completion: nil)
}
}

最佳答案

因为进度条会为更改设置动画,所以在您调用后到达进度条的末尾需要一些时间

self.progressBar.setProgress(progressFloat, animated: true)

通常的做法是延迟相关动画的处理(应该在进度条完成动画之后进行)。我的经验是大多数 iOS 动画需要 0.3 秒,所以只需延迟你需要的:
if progress.completedUnitCount >= progress.totalUnitCount {
delay(0.3) { // delay to let progress bar to complete the animation
self.dismiss(animated: true, completion: nil)
}
}


/// Delays given callback invocation
///
/// - Parameters:
/// - delay: the delay in seconds
/// - callback: the callback to invoke after 'delay' seconds
func delay(_ delay: TimeInterval, callback: @escaping ()->()) {
let delay = delay * Double(NSEC_PER_SEC)
let popTime = DispatchTime.now() + Double(Int64(delay)) / Double(NSEC_PER_SEC);
DispatchQueue.main.asyncAfter(deadline: popTime, execute: {
callback()
})
}

关于ios - Swift 进度条 completedUnitCount 和 totalUnitCount,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59963360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com