2017-02-01 10 views
2

Я застрял в проблеме. Я уверен, что один из вас, ребята, может мне помочь. Я разрабатываю iOS -Применения с Swift3 и то, что я пытаюсь создать что-то вроде этого:iOS - Как разместить неизвестное количество SubView с различными размерами по горизонтали.

Screenshot1
Screenshot2

Скриншотов показывает только часть моей UIViewcontroller. Остальное пространство заполняется другими представлениями, которые не являются частью вопроса. Как вы можете видеть, размер и положение моих подзонов (значок) зависит от количества значков, которые мне даны (не более 8). Если существует более 5 значков, он должен создать вторую строку и уменьшить размер значков в соответствии с пространством. Мои взгляды всегда должны быть центрированными, поскольку они равномерно распределены слева и справа.

Что я пытался до сих пор:

  • Я создал горизонтальный StackView и попытался заполнить его программно, но это не решило проблему более 5 Views.
  • Пробовал настраивать некоторые виды с ограничениями автоматической компоновки, но не мог решить проблему разных размеров и позиционирования.

Конечно, я мог бы сделать все в коде. Создание и размещение всех представлений один за другим, но я хотел бы найти более чистое решение.

Спасибо за ответы. Обратная связь приветствуется.

+0

Вид коллекции может быть лучшим вариантом там !! –

+0

Здравствуйте, Майк, благодарю вас за ответ. Я уже использовал CollectionViews, но только с ячейками фиксированного размера. Вы знаете, как я могу центрировать ячейки по горизонтали внутри вида коллекции? Я мог бы контролировать размер вида с помощью функции sizeForItemAt, правильно? –

+0

центральные ячейки по горизонтали. Все зависит от высоты представления коллекции, вам нужно установить высоту представления коллекции в соответствии с количеством строк, т.е. пусть sayf 5 ячейка, а затем установить высоту 120, если больше, чем установленный двойной как 240, распределяют по высоте амонные клетки, помогут –

ответ

0

UICollectionView Может быть лучшим вариантом здесь.

0

Его либо UIStackView, либо UICollectionView, поскольку они оба обрабатывают распределение подвью. Поскольку у вас есть максимум 8 значков, я просто использую UIStackView и вертикально складываю два горизонтальных стека. Вы помещаете элементы 1-5 в stackview 1 и 6-8 в stackview 2. Если вам нужны две строки, чтобы иметь один и тот же дистрибутив, тогда вам нужно поместить пустые представления с горизонтальными ограничениями, равными ширине imageView, чтобы сделать второй стек. многие элементы являются первыми, когда число нечетное.

0

Благодаря Шухе и Джошу за то, что они направили меня в правильном направлении.

Я закончил с использованием UICollectionView и изменил некоторые значения внутри sizeForItemAt, чтобы отреагировать на изменение размеров ячеек и insetForSectionAt функций для центрирования моих клеток по горизонтали.