快速滚动视图标签在切换选项卡视图后移动



我有一个标签栏,在其中一个视图中有一个滚动视图。我已在此滚动视图中添加了一个标签,但在加载时,它不在正确的位置。转到另一个选项卡视图并返回后,它立即处于正确的位置。

这是代码:

    scrollViewFunc()
    scrollView.addSubview(dateLbl)
    dateLbl.center = CGPoint(x: self.scrollView.center.x, y: self.scrollView.center.y + 100)
    func scrollViewFunc() {
    scrollView.translatesAutoresizingMaskIntoConstraints = false
    scrollView.contentSize.height = 800
    scrollView.backgroundColor = UIColor.brown
    self.view.addSubview(scrollView)
    //x,w,t,b
    scrollView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    scrollView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
    scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
}

我已经把它放在 viewDidLoad() 中以设置滚动视图和 viewWillAppear,但它在加载时仍然存在问题,因为它位于不正确的位置。

有什么建议吗?

在 scrollView 具有框架之前,将框架分配给标签。

dateLbl.center = CGPoint(x: self.scrollView.center.x, y: self.scrollView.center.y + 100)

应该在之后

    scrollView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    scrollView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
    scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true

此外,我不会指望约束立即解析为正确的帧,您可能还想使用约束设置 dateLbl,或者在知道 scrollView 具有正确的帧时在 viewDidLayoutSubviews 中设置帧。

最新更新