float: оставлено в объективе-c - PullRequest
9 голосов
/ 10 января 2011

Я пытаюсь заставить кучу кнопок вести себя примерно как float: left в CSS.Таким образом, всякий раз, когда вид меняет размер, например, при изменении ориентации, кнопки должны корректироваться таким образом, чтобы они подходили под их контейнерное представление.

В ландшафтном режиме этот UIScrollView должен прокручиваться горизонтально, в портретном режиме он должен прокручиваться вертикально.

Я пытаюсь сделать ScrollView похожим на вкладку «Featured» в приложении YouTube для iPad.Пейзаж имеет 4 столбца, портрет: 3 столбца, вкладка «Подписки», портрет, тот же вид имеет 2 столбца.

alt text

Ответы [ 3 ]

2 голосов
/ 10 января 2011

Я реализовал систему макетов , чтобы делать подобные вещи. Существует демонстрационный проект о том, как использовать его, зарегистрированный в этом хранилище. Я был бы рад ответить на любые вопросы по этому поводу. Это намного легче, чем AQGridView, поэтому, если вам не нужны дополнительные функции, которые он предоставляет, я бы рекомендовал подход, аналогичный моему.

1 голос
/ 10 января 2011

Возможно, вы захотите проверить AQGridView, который по сути является повторной реализацией NSCollectionView Какао: https://github.com/AlanQuatermain/AQGridView

В противном случае вам может потребоваться переопределить layoutSubviews в вашем parentView, а затем соответствующим образом изменить подвиды (кнопки) при изменении размеров parentView.

Приветствия

Johannes

0 голосов
/ 11 января 2011

Если бы вам пришлось реализовать это вручную (переопределив layoutSubviews), я думаю, что алгоритм будет выглядеть примерно так:

  1. Начинаются с X = 0, Y = 0 (при условии переворота координат)
  2. Для каждой кнопки:
    1. Если (X + ширина кнопки)> ширина контейнера, установите X = 0, увеличьте Y
    2. Поместить кнопку в (X, Y)
    3. Увеличение X на ширину кнопки
...