我用Swift 4制作了这个简单的游戏,但它没有用。
代码:
class ViewController: UIViewController {
@IBOutlet weak var TheCharacter: UIImageView!
@IBOutlet weak var rocket1: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
self.rocket1.isHidden = true
if 1 % 1 == 0 {
if 0 == 0{
self.rocket1.isHidden = false
let xPosR = rocket1.frame.origin.x + 500
let yPosR = rocket1.frame.origin.y
let heightCharacterR = rocket1.frame.size.height
let widthCharacterR = rocket1.frame.size.width
UIView.animate(withDuration: 1.75, animations: {
self.rocket1.frame = CGRect(x: xPosR, y: yPosR
, width: widthCharacterR, height: heightCharacterR)
}) { (finished) in
}
self.rocket1.isHidden = true
self.rocket1.frame = CGRect(x: xPosR - 500, y: yPosR, width: widthCharacterR, height: heightCharacterR)
}
}
}
}
我知道它写的很糟糕,但问题是其中一个火箭必须在我的屏幕上移动(从一侧到另一侧),因为条件始终为真,因为0 == 0和1%1 == 0.但它没有动。
为什么?
答案 0 :(得分:2)
您正在使用viewDidLoad()中的视图设置动画,也就是说,它们在窗口中可见之前。将该代码移动到viewDidAppear()。然后您的视图可见,并且可以设置动画。
并确保您的视图不使用限制框架的自动布局。动画帧不是一个好主意OTOH。