Swift - UIScrollView 滚动动画在 viewDidLoad() 中不起作用

Swift - UIScrollView scroll animation not working in viewDidLoad()

我正在开发一个使用 Storyboard 和 Xcode 12.3 的应用程序,我需要在视图加载到屏幕上之后以及用户 returns 从此视图的另一个视图控制器。在我看来,如果我从 viewDidLoad() 函数内或从展开 segue 时调用的函数滚动视图,动画将不起作用。相反,视图出现在屏幕上(在这两种情况下),滚动视图已经在相应位置滚动。本质上,最终结果已经实现,但滚动动画似乎被忽略或未执行。

有人可以帮忙解决这个问题吗?

这是我在这两种情况下演示问题的简单代码:

override func viewDidLoad {
    super.viewDidLoad()

    // ...

    scrollView.setContentOffset(CGPoint(x: xOffset, y: yOffset), animated: true)
}


@IBAction func myUnwindAction(unwindSegue: UIStoryboardSegue) {
    let segue = unwindSegue.source as! AnotherViewController

    // ...

   scrollView.setContentOffset(CGPoint(x: xOffset, y: yOffset), animated: true)
}

但是,如果我将滚动代码放在测试按钮的 IBAction 中,并在视图加载后单击此按钮,视图会平滑地动画滚动并且没有任何问题 - 这是此功能的代码:

@IBAction func testButton(_ sender: Any) {
    scrollView.setContentOffset(CGPoint(x: xOffset, y: yOffset), animated: true)
}

非常感谢。

需要在viewDidAppear中使用

你应该google“查看控制器生命周期”

var isFirst = true
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    if isFirst {
        isFirst = false
        scrollView.setContentOffset(CGPoint(x: xOffset, y: yOffset), animated: true)
    }
}