UIScrollView autolayout l oop, если фрейм контента меньше фрейма просмотра scrool - PullRequest
0 голосов
/ 16 февраля 2020

Попытка поместить представление UIViewController в представление прокрутки для всех возможных размеров экрана.

 class ScrollableContentViewController: UIViewController {

    private lazy var scrollView: UIScrollView = {
        let scrollView = UIScrollView()
        scrollView.showsVerticalScrollIndicator = false
        scrollView.showsHorizontalScrollIndicator = false
        return scrollView
    }()

    private var contentView: UIView?

    override func viewDidLoad() {
        super.viewDidLoad()

        guard let view = self.view else {
            return
        }

        view.removeFromSuperview()                

        self.view = scrollView
        scrollView.addSubview(view)
        self.contentView = view.superview
        if let contentView = view.superview {
            view.translatesAutoresizingMaskIntoConstraints = false
            view.leadingAnchor.constraint(equalTo: contentView.leadingAnchor).isActive = true
            view.trailingAnchor.constraint(equalTo: contentView.trailingAnchor).isActive = true
            view.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true
            view.bottomAnchor.constraint(equalTo: contentView.bottomAnchor).isActive = true
        }
        let wc = view.widthAnchor.constraint(equalTo: scrollView.widthAnchor)
        wc.priority = UILayoutPriority(rawValue: 1000)
        wc.isActive = true

        let hc = view.heightAnchor.constraint(equalTo: scrollView.heightAnchor)
        hc.priority = UILayoutPriority(rawValue: 700)
        hc.isActive = true
    }    

} 

А вот мой тест ViewController в раскадровке введите описание изображения здесь

Проблема

, если я поставлю h c .priority = UILayoutPriority (rawValue: 100), все работает на небольших телефонах с прокруткой, но на больших экранах автоматическое расположение l oop происходит, когда я сделать hc.priority = UILayoutPriority(rawValue: 1000) все работает на больших телефонах (без прокрутки) и без прокрутки на маленьких экранах - это работает, как задумано.

Вопрос Почему hc.priority = UILayoutPriority(rawValue: 100) вызывает макет l oop ? Но в то же время хорошо работает на маленьких экранах.

Пытался его отладить, но не получил достаточных результатов

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