Авторозкладка iOS для центрування мого подання між двома поданнями


77

Як налаштувати авторозкладку в Interface Builder, щоб розташувати подання вертикально, як показано на зображенні:

схеми

Top viewприкріплений до верхнього краю екрану, Bottom viewприкріплений до нижнього краю екрана. My viewмає бути по центру між видом зверху і знизу (так відстань Top viewдорівнює відстані до Bottom view)

Відповіді:


111

Це можна зробити, щоб між видимими видами було 2 невидимих ​​перегляду "spacer".

Ви не можете зробити так, щоб пробіли мали однакову висоту. Але ви використовуєте "spacer" подання і розміщуєте їх між своїми поданнями (з відхиленням 0 до оточуючих видів).

Потім ви дасте цим видам рівні висоти, і вони перемістять ваші погляди навколо, щоб відцентрувати центр My Viewз рівним відривом до Bottom Viewі Top View.

тобто ось так ...

V:|[Top View][spacer1][My View][spacer2(==spacer1)][Bottom View]|

РЕДАГУВАТИ - Інший спосіб

Я просто подумав про інший спосіб зробити це. Ви можете мати невидимий контейнер, UIViewякий знаходиться між Top Viewі Bottom Viewбез зазору.

Потім ви поміщаєте My Viewвсередину цього невидимого виду і центруєте його вертикально.


1
Чому б просто не дотримуватися рівної висоти верхнього та нижнього виглядів та центрувати середній вигляд у батьківському?
Антоніо Е.

5
Ну це б спрацювало. Хіба що не в цьому питання. Зображення у питанні чітко показує вид зверху та знизу з різною висотою. Крім того, він запитує про центрування подання точно між двома поданнями. Він не задається питанням центрування подання у його супервигляді.
Фогмайстер

1
@brigadir Так, в одній із кнопок праворуч внизу Interface Builder є опції "Оновити кадри відповідно до обмежень", а також "Оновити обмеження до фреймів". Ви хочете цей другий.
Фогмайстер

1
Я думаю, він говорив, що "Інший шлях" був кращий за оригінальну відповідь, не те, що був третій спосіб, який був кращим. :)
Джеймс Річард,

2
Я щойно використав ваш «Інший спосіб», неймовірно простий у налаштуванні, дякую!
user3344977

48

Ще одне рішення - додати невидимий вигляд між видом зверху та видом низу та помістити мій погляд у центр цього виду:

По центру UIView


1
Такий геніальний хак! Велике спасибі
Maximelc

16

(5 років потому) Я знайшов найбільш канонічне рішення:

UILayoutGuide спеціально представлений для вирішення такого роду завдань (починаючи з iOS 9).

Використовуйте напрямні макета, щоб замінити фіктивні подання, які ви, можливо, створили для представлення проміжків перегляду або інкапсуляції у вашому користувацькому інтерфейсі - Ref docs

Він працює досить добре в коді, але, на жаль, Interface Builder не підтримує спеціальні напрямні макета.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.