ios - UIScrollView,来自 viewDidLayoutSubviews 的 contentView 边界错误
问题描述
我正在以编程方式创建 UIScrollView。为此,我有这样的事情
final class MyViewController: UIViewController {
private lazy var scrollView: UIScrollView = {
let scrollView = UIScrollView()
scrollView.bounces = false
return scrollView
}()
private lazy var contentView: UIView = {
return UIView()
}()
private lazy var myScrolledView: MyScrolledView = {
return MyScrolledView()
}
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(scrollView)
scrollView.addSubview(contentView)
contentView.addSubview(myScrolledView)
// ScrollView Contraints
scrollView.translatesAutoresizingMaskIntoConstraints = false
scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
// ContentView Constraints
contentView.translatesAutoresizingMaskIntoConstraints = false
contentView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor).isActive = true
contentView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor).isActive = true
contentView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
contentView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
contentView.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true
contentView.heightAnchor.constraint(equalTo: scrollView.heightAnchor).isActive = true
// MyScrolledView Constraints
myScrolledView.translatesAutoresizingMaskIntoConstraints = false
myScrolledView.centerXAnchor.constraint(equalTo: contentView.centerXAnchor).isActive = true
myScrolledView.centerYAnchor.constraint(equalTo: contentView.centerYAnchor).isActive = true
myScrolledView.widthAnchor.constraint(equalToConstant: 500).isActive = true
myScrolledView.heightAnchor.constraint(equalToConstant: 500).isActive = true
}
}
这工作正常,我可以毫无问题地滚动视图。
现在我需要从 viewDidLayoutSubviews 调整一些视图。但是我知道我的 contentView 和 scrolledView 的大小为零。
将以下代码添加到我的视图控制器。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print(scrollView.bounds)
print(contentView.bounds)
print(myScrolledView.bounds)
}
呈现视图时生成此输出。
(0.0, -70.0, 1112.0, 834.0)
(0.0, 0.0, 0.0, 0.0)
(0.0, 0.0, 0.0, 0.0)
为什么此时我的 contentView 和 myScrolledView 的大小不正确?我们如何才能得到这些视图的实际界限?
解决方案
推荐阅读
- bash - 子shell 是否并发运行?
- authentication - 无需 XHR 请求的网站登录自动化
- python - 我正在尝试使用 python 将 csv 文件导入 mysql。我收到一个错误“TypeError:格式字符串的参数不足”
- elasticsearch - 为什么 Elasticsearch 中存在映射?
- python - 如何修改这个曲线图?
- python - Python:根据同名的现有文件夹创建一个具有递增编号的文件夹
- javascript - 如何向所有服务器发送消息
- javascript - React Native,应用程序未在 iphone 上运行
- .net-core - 使用 .AsExpandable() 时 .Include() 的 EF Core 3 问题
- spacy - 优化 spaCy 命名实体识别以提高精度