首页 > 解决方案 > 切换选项卡视图后移动的 Swift 滚动视图标签

问题描述

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

这是代码:

    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,但加载时仍然存在问题,即它位于不正确的位置。

有什么建议吗?

标签: swiftconstraintsscrollviewtabbar

解决方案


在 scrollView 有一个框架之前,你为你的标签分配一个框架。

IE 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 中设置帧。


推荐阅读