swift - 切换选项卡视图后移动的 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,但加载时仍然存在问题,即它位于不正确的位置。
有什么建议吗?
解决方案
在 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 中设置帧。
推荐阅读
- asp.net - ASP.NET MVC,是否可以在一个地方编写一个 Response.AppendToLog 来对每个请求起作用?
- java-money - Java 的货币和货币操作 - JSR 354
- kubernetes - Kubernetes pod 对集群或命名空间级别的限制
- amazon-web-services - 在不遵循终止策略的情况下,您能否指定在通过自动扩展组缩减 EC2 实例时要终止的实例?
- sed - 使用 sed 使用环境变量替换复杂行
- ruby-on-rails - 为什么我的 Rails DB 迁移没有创建列?
- javascript - Js/jQuery - 此代码将大小设置为变量,有什么方法可以使其响应?
- javascript - NPM 损坏并报告此错误:npm ERR!404
- salt-stack - 使用 Salt 安全交付 Minion 特定文件的最佳方法是什么?
- wordpress - 两个 WordPress 实例随机生成,状态为 301