我有一个标签栏,在其中一个视图中有一个滚动视图。我已在此滚动视图中添加了一个标签,但在加载时,它不在正确的位置。转到另一个选项卡视图并返回后,它立即处于正确的位置。
这是代码:
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 中设置帧。