使用 scrollView.zoom 时,按下按钮和调用函数会得到不同的结果

When using scrollView.zoom I get different results from pressing a button to calling a function

我正在尝试缩放到 UIScrollView 上的按钮。第一个功能是我 运行 如果我转到 vc,第二个功能是 运行 来自视图中的按钮。

当运行使用第二个函数时,它完美运行并正确居中

然而,首先,尽管代码相同,但它在 x 轴上有大约 40-50 像素的偏移量(显示按钮左侧的一个点,而不是按钮的任何部分),尽管此偏移量会根据按钮。

func moveScrollviewToRoom(){
    scrollView.zoom(to: artButton.frame, animated: true)
}

@IBAction func moveScrollview(_ sender: Any) {
    scrollView.zoom(to: artButton.frame, animated: true)
}

这里调用了函数:

override func viewDidLoad() {
    super.viewDidLoad()
    
    if moveToRoom != "" {
        moveScrollviewToRoom()
       }

如有任何帮助,我们将不胜感激

干杯!

两点...

1 - 视图和子视图尚未在 viewDidLoad() 中通过自动布局定位,因此 artButton.frame 将不正确。

2 - 从 viewDidLoad() 调用任何动画视图的函数都不会给出所需的结果,因为视图甚至还不可见。

将您的电话转到 viewDidAppear():

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

    if moveToRoom != "" {
        moveScrollviewToRoom()
    }

}