UIScrollView, неправильные границы для contentView от viewDidLayoutSubviews - PullRequest
2 голосов
/ 22 апреля 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...