Я взагалі не розумію, чому люди скаржаться на те, що " Поля спричинить відверту аварію на чому-небудь до iOS 8. "
Налаштування ваших обмежень по відношенню до краю в файлі XIb або розкадровки НЕ зробити ваше додаток аварії на iOS7, і він НЕ робить різницю UI на пристрої iOS7 ні, до тих пір , поки ви не торкнутися UIView.layoutMargins
і UIView.preservesSuperviewLayoutMargins
властивості в вашому коді.
Що таке Поля в iOS8
Компонування поле являє відступи навколо внутрішньої частини UIView
що система компонування можна використовувати при прокладці підвидів - щоб гарантувати , що залишається зазор між краєм зору і підвидом. У цьому відношенні це дуже схоже на властивість padding, пов'язану з блоками в CSS.
За замовчуванням у UIView
поля розміщення 8 балів на кожній стороні, і це не може бути змінено в Interface Builder . Однак, встановивши UIView.layoutMargins
властивість у коді, який доступний лише в iOS8, ви можете скорегувати ці значення.
Ви можете отримати ІБ для відображення поля за допомогою Редактора> Полотно> Показати прямокутники макета:
Поля можуть бути використані для планування ваших поглядів та підданих. КоженUIView
постачається з полями за замовчуванням, але вони впливають на розміщення представлення даних лише тоді, коли ви встановлюєте обмеження, пов’язане з маржами.
Як користуватися маржами
Єдиний спосіб використовувати поля в Interface Builder - це перевірити параметр Відношення до поля при налаштуванні обмежень. Ось як ви спрямовуєте обмеження на використання поля замість ребер, коли викладаєте мій погляд.
Давайте розглянемо чотири різних способи встановлення провідного обмеження між поданням та його підглядом. Для кожного обмеження ми розглядаємо, що перша описувана асоціація буде провідною , а друга - провідною . На що ви хочете звернути пильну увагу, це перевірити та зняти прапорець у відношенні параметра Відношення до поля кожного кінця обмеження, оскільки це визначає, чи обмеження прив’язане до поля чи до краю перегляду.
- Перший елемент (зніміть прапорець), другий елемент (позначка): У цьому випадку ми заявляємо, що лівий край підгляду повинен вирівнюватися до лівого поля супервізу (як показано на цьому зображенні).
- Перший елемент (зніміть прапорці), другий елемент (зніміть прапорці): обидва використовують край, а не поле . У цьому випадку ми заявляємо, що лівий край підгляду повинен вирівнюватися до лівого краю нагляду.
- Перший елемент (перевірка), другий елемент (зніміть прапорець): У цьому випадку ми заявляємо, що лівий край підгляду має вирівнюватися до лівого краю нагляду. Цей вид компонування насправді змушує підзагляд перекривати нагляд.
- Перший предмет (чек), другий предмет (чек). Це насправді має такий же ефект, як і у випадку 2, оскільки і субпідгляд, і нагляд мають однакову маржу за замовчуванням. Ми заявляємо, що лівий запас підрозділу повинен відповідати лівому краю супервізу.
Що добре в маржі
Ця нова функція (iOS8) впливає лише на розвиток інтерфейсу, якщо ви вирішили використовувати поля.
Використовуючи поля, ви можете налаштувати розміщення декількох підвидів, які мають спільне відношення до спільного перегляду, змінивши значення одного властивості. Це явна перемога над встановленням усіх пов’язаних обмежень із фіксованими значеннями, тому що якщо вам потрібно оновити всі інтервали, замість того, щоб змінювати кожне значення по одному, ви можете одночасно змінювати всі відповідні місця розташування, оновлюючи поле супервізу на один рядок код такий:
self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);
Щоб проілюструвати цю перевагу, у наступному випадку всі ліві краї підперегляду вирівнюються до лівого краю їхнього перегляду. Таким чином, зміна лівого поля нагляду буде впливати на всі підгляди одночасно.