UIScrollView на различных устройствах


#1

Не могу разобраться со scrollView. Вот так выглядит мое окно:

Высоту окна сделал Freeform и поставил 730.
Вот так выглядит иерархия:

Каждый серый квадрат - кнопка, и у каждой установлен aspect ratio 1:1.
Сам скроллинг у меня работает только при выполнении следующего кода, если его убрать, то экран скроллится, но потом сразу возвращается в исходное состояние:

let differentOfSize = additionalView.frame.height - view.frame.height + 64
if differentOfSize > 0 {
	scrollView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: differentOfSize, right: 0)
}

Добавляю 64, т.к. 20 на окно состояния и 44 на navigationBar.

Но вот в чем основная проблема, additionalView у меня всегда равен 710, независимо от того, на каком устройстве запускаю программу, но т.к. aspect ratio у кнопок 1:1, то на устройствах с большим экраном каждая кнопка больше, и в итоге скроллинг нормально работает только на 5s, а на том же 7 Plus он работает только до середины третьей кнопки.
Как сделать, чтобы скроллинг работал нормально независимо от устройства?


#2

Используйте uicollectionview он как раз для подобных случаев, ну если вы не пытаетесь изобрести велосипед заново :slight_smile: