autolayout с динамикой подвиды
Я пытаюсь сделать домашний экран на моем ИОС 10 приложения, как на фото сверху. Зеленый вид - это прокрутка, и я устанавливаю ограничения для охвата всего представления. Все в scrollView я хочу сделать прокручиваемым. Желтая часть представляет собой коллекцию с прототипом ячейки. Количество элементов в этом представлении - 6. Ячейка состоит из фотографии и названия. Просмотр таблицы - список новостей (фото + название). Когда приложение запускается в виде таблицы, я загружаю 10 последних новостей и остальные новости, которые я получаю с механизмом «загрузить больше». Мне нужна правильная работа приложения даже в альбомной ориентации. У меня есть проблема, чтобы определить этот макет, потому что представление коллекции и tableView имеют динамическую высоту, а пространство между ними должно быть исправлено. Обычно почти во всех учебниках люди просто фиксировали scrollView и GridView, и в этом случае приложение выглядит хорошо на портретной ориентации, но мне нужна более гибкая. Можно ли добиться этого путем автоматической компоновки и ограничений, и если да, каковы правильные направления
UPDATE:
вид Коллекция
Wha t Я хочу добиться, чтобы сделать просмотр коллекции в виде двух столбцов и трех строк в портретной ориентации и 3 столбца и 2 ряда по пейзажу. В настоящее время у меня есть collectionView со свитком, но я хочу, чтобы его время расширялось, потому что содержимое коллекцииView должно состоять из 6 выделенных новостей.
На viewDidLoad я попытался установить вид таблицы на правильное положение (после представления коллекции):
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
collection.dataSource = self
collection.delegate = self
tableView.delegate = self
tableView.dataSource = self
self.view.addConstraint(
NSLayoutConstraint(
item: tableView,
attribute: .top,
relatedBy: .equal,
toItem: collection,
attribute: .bottom,
multiplier: 1.0,
constant: 20
))
tableView.frame = CGRect(x: 0,y: collection.collectionViewLayout.collectionViewContentSize.height,width: tableView.frame.width,height: tableView.frame.width); // set new position exactly
downloadArticles(offset: "0") {}
}
Пример того, что я хочу, чтобы достичь является:
В настоящее время у меня есть это:
Autolayout может работать с динамическими подзонами. Что не работает с вашим текущим набором ограничений и что вы ожидаете? Ваш вопрос должен быть очень ясным, чтобы у кого-то даже был шанс помочь вам. –
В случае, если вы еще этого не сделали, все содержимое, которое вы хотите отобразить в вашем scrollview, должно быть отображено в виде контейнера внутри представления контейнера, и этот вид контейнера должен быть единственным подпунктом scrollview. – Zhang
@ Zhang: Я уже установил его так, как вы сказали – Ognjen