viewDidAppear和viewWillDisappear中的Alpha动画无法可靠运行

时间:2019-07-17 16:19:44

标签: ios swift

我有一个PageViewController,它正在作为子视图添加。

控制器本身工作正常,但我正在尝试实现淡入淡出。因此,我将其添加到每个PageViewController页面/视图控制器中:

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.alpha = 0
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    UIView.animate(withDuration: 0.25, delay: 0.15, options: .curveEaseIn, animations: {
        self.view.alpha = 1
    })
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    UIView.animate(withDuration: 0.25, delay: 0.15, options: .curveEaseIn, animations: {
        self.view.alpha = 0
    })
}

对于PageViewController内部的 first 视图控制器,以上动画都不起作用。对于第二个-最后​​一个视图控制器,仅viewDidAppear()动画有效。

如何使所有vc的所有动画都能正常工作?

这就是我将PageViewController添加到其父级的方法:

override func viewDidAppear(_ animated: Bool) {
    if showTutorial == true {
        let controller = storyboard!.instantiateViewController(withIdentifier: "tutorial")
        addChild(controller)
        controller.view.frame = view.frame
        view.addSubview(controller.view)
        controller.didMove(toParent: self)
    }
}

1 个答案:

答案 0 :(得分:0)

我认为,因为视图控制器已添加到页面控制器中,所以可能不会像通常认为的那样调用viewDidAppear / viewDidDisappear方法。在其中放置打印语句,以查看是否

如果没有,我将调查页面控制器委托,并从中获得回调,表明页面已更改,请相应地运行动画