gpt4 book ai didi

ios - Swift4:如何解析 "Fatal error: Can' t form Range with upperBound < lowerBound”?(UI 中的持续时间延迟)

转载 作者:行者123 更新时间:2023-11-29 05:43:58 24 4
gpt4 key购买 nike

我尝试使用动画来关闭菜单,我决定在按下按钮时减小 UIScrollView 的大小,当大小减小到我想要的值时,然后将其隐藏。

为了在某些时候根据我想要的用户界面完成任务,我使用了“时间延迟功能”(给定 300 毫秒)

一切顺利:如果我不一次又一次地按下按钮,直到达到时间限制

发生错误:当我在 300 毫秒内一次又一次按下按钮时

func disAppearBlanceMenu(){
let x1 = btn_addBalance.clickableimg.frame.midX
let y1 = btn_addBalance.clickableimg.frame.maxY

UIView.animate(withDuration: 0.3) {
self.BalanceMenu.scrollview.frame = CGRect(x: x1 - 150, y: y1 + 20, width: 200, height: 20)
}
time.delay(milliSec: 300) {
self.BalanceMenu.triangle.isHidden = true
self.BalanceMenu.scrollview.isHidden = true
for i in 0...(self.BalanceMenuBtn.count - 1) {
self.BalanceMenuBtn[i].imag.removeFromSuperview()
self.BalanceMenuBtn[i].button.removeFromSuperview()
}
self.BalanceMenuBtn.removeAll()

}
displayBalanceMenu = true
}

哪里

class time {
static func delay(milliSec:Int, code: @escaping () -> Void ) {
let deadline = DispatchTime.now() + .milliseconds(milliSec)
DispatchQueue.main.asyncAfter(deadline: deadline) {
code()
}
}
}

错误发生在这里:

time.delay(milliSec: 300) {

上面写着

'Thread 1: Fatal error: Can't form Range with upperBound < lowerBound'

最佳答案

在代码中,您应该在执行 for 循环之前添加一个条件,如下所示:

time.delay(milliSec: 300) {
self.BalanceMenu.triangle.isHidden = true
self.BalanceMenu.scrollview.isHidden = true
if self.BalanceMenuBtn.count > 0 {
for i in 0...(self.BalanceMenuBtn.count - 1) {
self.BalanceMenuBtn[i].imag.removeFromSuperview()
self.BalanceMenuBtn[i].button.removeFromSuperview()
}
self.BalanceMenuBtn.removeAll()
}
}

当 for 循环中下限大于上限时,您会收到此错误。在您的代码中,当第一次动画完成时,数组的计数将为 0,第二次的情况如下

for I in 0...-1

这就是为什么您会崩溃,并且通过检查计数的条件(如我的答案所示),这不会崩溃。

希望这有帮助。

关于ios - Swift4:如何解析 "Fatal error: Can' t form Range with upperBound < lowerBound”?(UI 中的持续时间延迟),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56315464/

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