首页 > 解决方案 > Swift 4 - 后台功能不起作用

问题描述

我用 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。但事实并非如此移动。

为什么?

标签: iosswiftdebuggingviewdidload

解决方案


您正在 viewDidLoad() 中为视图设置动画,也就是说,在它们在窗口中可见之前。将该代码移至 viewDidAppear()。然后你的视图是可见的并且可以被动画化。

并确保您的视图没有使用限制框架的自动布局。动画框架不是一个好主意OTOH。


推荐阅读