IOS - Использование раскадровки и автозапуска для центра UIScrollView

Я создаю приложение iOS, используя панель рассказов и автомат, чтобы она работала хорошо как на iPhone4, так и на iPhone5. Ниже приведен снимок экрана, который я создаю с помощью панели рассказов.

enter image description here

В приведенном выше изображении я хочу сохранить прокрутку в середине от переднего края viewview и правого представления таблицы. Я не хочу, чтобы вид прокрутки увеличивал ширину в iPhone5. Я пробовал разные комбинации ограничений, но я не мог этого добиться.

Может кто-нибудь подскажет мне, каковы все ограничения, которые я должен установить для просмотра прокрутки, чтобы он был в центре.

Ответ 1

Вам нужно будет сделать это, добавив дополнительный вид на экран.

На данный момент у вас есть...

- UIView (main view)
    |
    | - scrollView
    | - tableView

Вы должны поместить вид прокрутки в другое представление, подобное этому...

- UIView (main view)
    |
    | - UIView (spacer View)
    |    | - scrollView
    |
    | - tableView

Теперь, что вы можете сделать, это эти ограничения...

spacer view leading edge constraint to super view = 0
spacer view trailing edge to table view leading edge = 0
table view width = (whatever the width is)
table view trailing edge to super view = 0

Это выведет вид спейсера и вид таблицы так, чтобы вид спейсера увеличивался.

Теперь вам нужно добавить...

scroll view width = x
scroll view height = y
scroll view centered vertically in super view
scroll view centered horizontally in super view.

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

Ответ 2

Как центрировать просмотр на раскадровке

Этот ответ был обновлен для Xcode 8.

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

Я предполагаю, что вы используете раскадровку (не файлы XIB) и автоматический макет. Это значение по умолчанию в настоящее время, поэтому, если вы не знаете, что это значит, не беспокойтесь об этом. Однако, если вы хотите проверить, вы можете нажать Main.storyboard в Навигаторе проектов, а затем на Инспектор файлов. Вы можете убедиться, что флажок Использовать автоматический макет:

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

Выберите свою кнопку (или любой другой вид, который хотите центрировать) на раскадровке. Затем нажмите кнопку выравнивания в правом нижнем углу. Выберите "Горизонтально в контейнере" и "Вертикально в контейнере". Нажмите "Добавить 2 ограничения".

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

Если бы он не был полностью центрирован, вам, возможно, понадобится сделать еще одну вещь. Нажмите кнопку "Обновить фреймы", расположенную в два раза слева от кнопки выравнивания. Теперь ваше мнение должно быть сосредоточено на раскадровке.

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

И что еще более важно, теперь, когда вы запускаете свое приложение, оно должно быть сосредоточено независимо от того, какой размер устройства вы используете.

Я изначально узнал об этом из Создание пользовательского интерфейса - Автоматический макет. Основная идея остается прежней, но теперь пользовательский интерфейс немного изменился в Xcode.

См. также