Swift iOS: программно создайте адаптивное меню, используя UIButton, View и ограничения - PullRequest
0 голосов
/ 01 мая 2018

В методе viewDidLoad() я хотел бы создать 10 кнопок UIB, озаглавить их
["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"]
и добавьте их в представление таким образом, чтобы они всегда располагались с учетом ограничений.

Я бы хотел от UIButton до View, который всегда находится вверху страницы, но реагирует на позиционирование пользователем устройства и текста, который помещается в UIButton.title.

Это то же самое, что Bootstrap CSS делает с использованием CSS-классов "table", "row", "col-md-2".

Пример макета: enter image description here

Если названия кнопок меняются, код должен автоматически настраивать позиционирование следующим образом:

enter image description here

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Как сказал комментатор ..... используйте представление стека, представление коллекции является излишним.

0 голосов
/ 01 мая 2018

Используйте UICollectionView и UICollectionViewFlowLayout, настройте контроллер на соответствие протоколу UICollectionViewDelegateFlowLayout, а затем для каждой ячейки просто рассчитайте ширину UIButton, а затем укажите размер UICollectionViewDelegateFlowLayout

Что-то вроде:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let itemWidth = ...//calculate the width of the button
    return CGSize(width: kCGImagePropertyIPTCExtMaxAvailWidth, height: 50)//set height to whatever you want
}
...