2016-11-27 2 views
0

Я работаю над приложением и решил использовать UIScrollView. Я использую Cartography для установки ограничений элементов внутри UIScrollView.UIScrollView contentSize height с использованием картографии

Мой вопрос: В картографии мы можем получить нижнее положение элемента с element.bottom, есть ли способ использовать это положение, чтобы установить высоту содержимого контента UIScrollView? Я знаю, что является последним элементом.

+0

На самом деле это проще, чем я думал. Я просто установил view.bottom == view.superview! .дно –

ответ

0

В соответствии с этим answer в проекте Github Cartography это недопустимо.

Не уверен, что вы имеете в виду, но view.bottom - это не значение, а переменная символическая (в конце концов, это задача Auto Layout для определения значения).

Теперь, что меня больше всего поражает, так это то, что если я устанавливаю ограничения вручную, не используя Картографию, это работает правильно.

self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[v0(\(getScreenSize().width * 0.68))]-25-[v1][v2(\(textViewHeight))][v3(44)]-20-[v4(32)][v5(300)]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": imageView, "v1": titleTextView, "v2": textView, "v3": stackView, "v4": galleryHeader, "v5": collectionView])) 
1

Когда вы используете AutoLayout, contentSize scrollView будет вычислять себя. Т.е.: он будет иметь высоту, соответствующую общей высоте содержащихся в ней элементов. Вы должны просто привязать нижнюю часть вашего нижнего элемента к нижней части вашего scrollView.

| - [view1 (100)] - [view2 (150)] - [view3 (100)] - | 

Предположим, что у вас есть это, причем каждый из них представляет собой ограничение горизонтального расстояния 0 и значение | границы scrollView, таким образом, contentSize scrollView будет вычисляться в соответствии с общей шириной элементов, которые он содержит, и будет 350.

Вы можете проверить эту часть документа Apple о том, как работать с scrollViews и AutoLayout: https://developer.apple.com/library/content/technotes/tn2154/_index.html

Просто помните, что вы не должны устанавливать contentSize прокруткиView вручную при использовании AutoLayout.

Смежные вопросы