Ios 如何在swift UIView中获取随机坐标?
我正在创建一个动画函数,在uiView中随机生成ImageView。但它总是返回0,0请帮助Ios 如何在swift UIView中获取随机坐标?,ios,swift,uiview,Ios,Swift,Uiview,我正在创建一个动画函数,在uiView中随机生成ImageView。但它总是返回0,0请帮助 private func coinAnimation(image: UIImage) { let imageView = UIImageView(image: image) imageView.frame = self.view.convert(self.coinsView.frame, from: self.coinsView.superview!) imageView.con
private func coinAnimation(image: UIImage) {
let imageView = UIImageView(image: image)
imageView.frame = self.view.convert(self.coinsView.frame, from: self.coinsView.superview!)
imageView.contentMode = UIView.ContentMode.scaleAspectFit
imageView.backgroundColor = .red
let frame = coinsView.frame
let x = randomInRange(lo: 0, hi: Int(frame.size.width - imageView.bounds.size.width))
let y = randomInRange(lo: 0, hi: Int(frame.size.height - imageView.bounds.size.height))
let position = CGPoint(x: x, y: y)
UIView.animate(withDuration: 1.0, delay: 0.0, options: .curveEaseInOut, animations: {
imageView.center = position
self.coinsView.addSubview(imageView)
}, completion: nil)
}
private func randomInRange(lo: Int, hi : Int) -> Int {
return lo + Int(arc4random_uniform(UInt32(hi - lo + 1)))
}
您的问题与下面的行有关
imageView.frame = self.view.convert(self.coinsView.frame, from: self.coinsView.superview!)
此行将coinsView
的同一帧设置为imageView
。当你试图在下面的代码中获得随机的x点和y点时,它总是返回0。因为frame.size.width
和imageView.bounds.size.width
是相同的,高度也是相同的
let x = randomInRange(lo: 0, hi: Int(frame.size.width - imageView.bounds.size.width))
let y = randomInRange(lo: 0, hi: Int(frame.size.height - imageView.bounds.size.height))
为了更好地理解,请在代码中添加以下行以设置imageView
Frame,最初需要将静态Frame设置为图像视图
imageView.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
确保宽度和高度应小于coinsView的宽度和高度的宽度和高度什么是lo和hi值?为什么不使用Int。随机(范围)lo和hi是最低和最高值,lo为0,正在计算最高值。您是否验证了大边界是非零值,不要使用arc4random_uniform现在我们有更好的API由apple提供:)我会查看:)谢谢你的帮助。我会给你任何反馈!谢谢你的帮助,先生!很抱歉回复太晚,但我一直在开发一个不同的功能。刚刚实现了它,它工作得很好。