切换选项卡视图后移动的Swift Scroll View标签

时间:2019-01-11 02:15:04

标签: swift constraints scrollview tabbar

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

代码如下:

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

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在scrollView包含框架之前,将一个框架分配给标签。

即      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

应该之后

.sidebar {
    width: 207px;
    display: block;
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    z-index: 1;
    overflow: hidden;
    background-color: #2D51A3; 
}

.content {
    position: relative;
    z-index: 4;
    float: right;
    width: calc(100% - 215px);
    min-height: calc(100vh - 3.1em);
    background-color: green;
}

<div class="app">
    <div class="sidebar">
    </div>
    <div class="content">
    </div>
</div>

我也不会指望立即解决到正确框架的约束,您可能也想设置具有约束的dateLbl,或者在知道scrollView具有正确框架的情况下在viewDidLayoutSubviews中设置框架。