Я создаю 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 на данный момент не верны? Как мы можем получить реальные границы этих представлений?