Проблема автоматической компоновки с рядом просмотров изображений

Это сводит меня с ума!

Я пытаюсь показать ряд изображений подписчиков в профиле в своем приложении. Идея состоит в том, чтобы было 5 изображений, по которым теоретически можно было бы щелкнуть и перейти к их профилю.

Вот с чем у меня сейчас проблемы:

Ад автомакета

Мне никогда раньше не приходилось спрашивать об автоматической компоновке, поэтому я не знаю, что показать вам всем за вашу помощь. Такое ощущение, что это глупая проблема...

Вот настройка:

  • Разработан в отдельном XIB
  • Все элементы инкапсулированы в UITableViewCell.

Любая помощь будет оценена по достоинству.

РЕДАКТИРОВАТЬ: Итак, по словам Михала, я попробовал представление стека, и хотя это казалось правильным, честно говоря, это дало мне те же результаты, поэтому я уверен, что делаю это неправильно. Пожалуйста, смотрите изображения ниже

введите здесь описание изображения введите здесь описание изображения


person Andy    schedule 16.02.2016    source источник
comment
Планируете ли вы поддерживать только iOS 9? Если это так, UIStackView, вероятно, будет самым простым решением.   -  person Michał Ciuba    schedule 17.02.2016
comment
Я попробовал UICollectionView, похож ли StackView? Проблема, с которой я столкнулся, заключалась в том, что у меня есть это как отдельная XIB и пользовательская ячейка представления таблицы, поэтому я не уверен, как передать делегатов через базовый контроллер представления, который просто регистрируется в этом nib.   -  person Andy    schedule 17.02.2016
comment
@MichałCiuba Итак, я попробовал представление стека, и мои результаты приведены выше, см. Исходный пост.   -  person Andy    schedule 17.02.2016
comment
Выберите все ваши UIImageView и установите для них одинаковую ширину (Shift + щелкните все UIImageView... щелкните значок добавления новых ограничений в правом нижнем углу в построителе интерфейсов... Выберите «Равная ширина», затем «Добавить ограничения»   -  person MSU_Bulldog    schedule 17.02.2016
comment
@MSU_Bulldog Если я это сделаю, все изображения растянутся, что может быть из-за моих ограничений....   -  person Andy    schedule 17.02.2016
comment
Нет, в этом есть смысл, но ты приближаешься. Примените ограничение соотношения сторон к каждому из ваших UIImageView.   -  person MSU_Bulldog    schedule 17.02.2016
comment
добавление равной ширины будет работать, если у вас достаточно изображений, чтобы заполнить строку, если ваши изображения имеют соотношение 1: 1, а иногда вы можете захотеть показать меньше «Подписчиков». Я думаю, что лучший вариант - это UICollectionview и установить ширину ячеек, равную контейнеру.   -  person Oscar J. Irun    schedule 17.02.2016
comment
@OscarJ.Irun Первоначально я думал так же, но я понятия не имею, как заставить представление коллекции работать в пользовательской NIB + Custom uitableviewcell ... он попытался и чуть не сломал мой ноутбук пополам. Но вы правы, мне не нужно будет иметь фиксированную сумму, потому что телефоны разной ширины...   -  person Andy    schedule 17.02.2016
comment
@MSU_Bulldog Я попробовал обе вещи, и они выглядят лучше, но все же не так, как будто они больше, и моя консоль завалена жалобами на автомакет ...   -  person Andy    schedule 17.02.2016
comment
Почти готово, теперь добавьте ограничение высоты для каждого UIImageView, чтобы их высота оставалась постоянной. Затем выберите каждый UIImageView и установите ограничение равной высоты, как вы сделали с шириной... Я предполагаю, что вы уже установили начальное значение для каждого UIImageView. и ограничения конечного пространства... Если нет, то установите начальные и конечные ограничения индивидуально для каждого UIImageView   -  person MSU_Bulldog    schedule 17.02.2016


Ответы (1)


Я решил, что сделаю это ответом, чтобы комментарии не были слишком длинными. Итак, со всем этим ограничения, которые вы должны были добавить:

1) Установите для всех UIImageView одинаковую ширину

2) Установите все ограничения соотношения сторон UIImageView.

3) Добавьте ограничение по высоте для каждого UIImageView

4) Установите для всех UIImageView одинаковую высоту, как и ширину на шаге 1.

5) Установите начальные и конечные пробелы для каждого UIImageView. Это немного сложно. Первый UIImageView должен иметь ведущее ограничение = x. Последний UIImageView должен иметь конечное ограничение = x. Ограничения между каждым UIImageView должны быть >= x.

Это значок для выбора ограничений:

введите здесь описание изображения

person MSU_Bulldog    schedule 16.02.2016
comment
Да спасибо за это! Я пытаюсь заставить все, что вы сказали, работать. Но теперь я беспокоюсь о том, как это будет вести себя на меньшем экране, должно ли это все еще работать? - person Andy; 17.02.2016
comment
Да, это будет работать на любом размере экрана. Он будет поддерживать одинаковое соотношение сторон вашего UIImageView, иметь разную ширину между каждым UIImageView и оставлять высоту UIImageView одинаковой независимо от ширины экрана. Так, например, если бы ширина экрана составляла 1 фут, тогда все оставалось бы прежним, но пространство между каждым UIImageView менялось бы в соответствии с шириной экрана... а левый и правый UIImageView были бы закреплены по бокам. - person MSU_Bulldog; 17.02.2016
comment
Хорошо, это идеально именно то, что я ищу. Когда вы говорите об ограничениях между представлениями изображений, должен ли я просто использовать ограничение горизонтального интервала, которое предоставляет Xcode? - person Andy; 17.02.2016
comment
Когда вы нажимаете на UIImageView, а затем на правый нижний значок, вы можете выбрать ограничения начального и конечного пробелов. Я добавил картинку к ответу, чтобы вы поняли, что я имею в виду. - person MSU_Bulldog; 17.02.2016
comment
Ха-ха, да, я только что понял, что это было, теперь, когда я настроил свою камеру, первое и последнее изображение должны быть на краю каждой соответствующей стороны. Я для первого просмотра изображения хочу создать ведущий = суперпросмотр? - person Andy; 17.02.2016
comment
Да, и конечный должен быть ›= следующий UIImageView ....... и для последнего UIImageView вы хотите, чтобы конечный = superview и ведущий ›= ближайший UIImageView …. также убедитесь, что ограничение на поля не проверил - person MSU_Bulldog; 17.02.2016
comment
Nvm последний комментарий, поэтому у меня есть 0,8 для первого и 8,8 для среднего 3, а затем 8,0 для последнего. - person Andy; 17.02.2016
comment
Хорошо, отлично, кажется, что изображения работают хорошо, но теперь он жалуется на другие виды, поскольку они теперь сбиты с толку... Я продолжу играть с этим. Я ценю вашу помощь. - person Andy; 17.02.2016
comment
Давайте продолжим обсуждение в чате. - person Andy; 17.02.2016