Ios 如何在swift UIView中获取随机坐标?

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

我正在创建一个动画函数,在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.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提供:)我会查看:)谢谢你的帮助。我会给你任何反馈!谢谢你的帮助,先生!很抱歉回复太晚,但我一直在开发一个不同的功能。刚刚实现了它,它工作得很好。