gpt4 book ai didi

ios - UIDynamicAnimator落球循环迅速3

转载 作者:行者123 更新时间:2023-12-01 19:55:43 24 4
gpt4 key购买 nike

我有UIDynamicAnimator,球从上到下滴下,但有时掉3球,有时掉5等等。

但是我在for循环中添加了to = 50必须掉落50球

错误在哪里?

我的代码在下面。

class ViewController: UIViewController {


var squareView: UIView!
var numberlet: UILabel!
var gravity: UIGravityBehavior!
var animator: UIDynamicAnimator!
var collision: UICollisionBehavior!
var itemBehaviour: UIDynamicItemBehavior!

override func viewDidLoad() {
super.viewDidLoad()


let from = 0
let to = 50
let by = 1
for i in stride(from: from, to: to, by: by) {

let number = randomInt(min: 12, max:99)
let color = randomInt(min: 1, max:5)

let seconds = 3 * i
delayWithSeconds(Double(seconds)) {
self.start( color : "\(color)", number: "\(number)")
}

}

}
func randomInt(min: Int, max:Int) -> Int {
return min + Int(arc4random_uniform(UInt32(max - min + 1)))
}


override func loadView() {
super.loadView()
view.backgroundColor = UIColor.white

}



func start(color : String, number : String){

squareView = UIView(frame: CGRect(x: view.frame.size.width/2 - 30, y: 0, width: 70, height: 70))
squareView.layer.cornerRadius = 0
squareView.backgroundColor = UIColor(patternImage: UIImage(named: "\(color).png")!)
view.addSubview(squareView)

numberlet = UILabel(frame:CGRect(x: squareView.frame.size.width/2 - 18 , y: 0 , width: 70, height: 70))
numberlet.textColor = UIColor.black

numberlet.font = UIFont.init(name: "Helvetica-Bold", size: 30)
numberlet.text = number
squareView.addSubview(numberlet)


animator = UIDynamicAnimator(referenceView: view)
gravity = UIGravityBehavior(items: [squareView])
animator.addBehavior(gravity)

collision = UICollisionBehavior(items: [squareView])
collision.translatesReferenceBoundsIntoBoundary = true
// collision.addBoundaryWithIdentifier("barrier", fromPoint: CGPointMake(self.view.frame.origin.x, 350), toPoint: CGPointMake(self.view.frame.origin.x + self.view.frame.width, 350))
animator.addBehavior(collision)

itemBehaviour = UIDynamicItemBehavior(items: [squareView])
itemBehaviour.elasticity = 0.3
animator.addBehavior(itemBehaviour)

delayWithSeconds(2.9) {
self.squareView.removeFromSuperview()
self.numberlet.removeFromSuperview()
}

}


func delayWithSeconds(_ seconds: Double, completion: @escaping () -> ()) {
DispatchQueue.main.asyncAfter(deadline: .now() + seconds) {
completion()
}
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

}

最佳答案

我实现了您的代码。您问题的原因似乎在这里:

let seconds = 3 * i
delayWithSeconds(Double(seconds))
self.start( color : "\(color)", number: "\(number)")

在声明3 * i的位置,您要增加丢弃下一个的时间,因此要丢弃的 seconds变为0-3秒,0-6秒,0-9秒,0-12秒,依此类推。因此,并不是您没有删除新的方块,而是每次删除下一个方块所需的时间增加了3秒。

如果这是预期的行为,那么我不确定您的问题是什么。您的代码正在我的设备上运行。

关于ios - UIDynamicAnimator落球循环迅速3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42739140/

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