Додайте обмеження інтервалу до суперперегляду в Xcode 5


74

Я створюю додаток для iOS у Xcode 5, і у мене виникають проблеми з додаванням обмежень на макет. У Xcode 4.x я міг би просто додати пробіли, що ведуть / завершують / зверху / знизу, до контейнера (суперперегляду) до будь-якого елемента інтерфейсу. Зараз у мене є лише такий варіант:

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

Я хочу додати обмеження "нижній пробіл для суперперегляду" до мого текстового подання. Там сказано "інтервал до найближчого сусіда", але я не хочу створювати обмеження для "найближчого сусіда", у мене є щось інше під текстовим поданням, і я не хочу створювати обмеження з цим. Якщо під моїм текстовим поданням немає іншого об’єкта, він правильно додає обмеження до контейнера. Але якщо я намагаюся щось змінити, все псується: мені потрібно перенести всі подання кудись ще, потім додати обмеження, а потім додати перемістити інші види назад. Якщо я додаю обмеження між текстовим поданням та елементом інтерфейсу (у цьому випадку кнопка), воно не працює (все здається правильно: кнопка має обмеження внизу суперперегляду, а текстовий вигляд має обмеження вертикального інтервалу з і немає суперечливих обмежень). Елементи інтерфейсу відображаються за межами екрану в різних (3,5-дюймових) орієнтаціях екрана. Чи є помилка у Interface Builder, чи мені чогось не вистачає? Коли я міг налаштувати все правильно, мої елементи управління все ще здаються поза межами, коли я змінюю розмір екранів конструктора інтерфейсів, але відображаю правильно на симуляторі / пристрої на 3,5 дюйма. Яка "найкраща практика" проектування інтерфейсу користувача з новими обмеженнями Interface Builder у Xcode 5?

ОНОВЛЕННЯ: У мене виникають ще деякі проблеми в іншому проекті з тим самим. Я намагаюся зафіксувати верхню частину подання у верхній частині макета, просто перетягуючи CTRL туди, де написано "керівництво верхнім макетом", і намагається перенести нижню частину мого елемента керування на макет (приблизно на -470 точки), замість того, щоб міняти верхню частину мого елемента керування, що не має жодного сенсу, оскільки елемент керування повинен розміщувати себе на екранах із змінною висотою (наприклад, звичайний і 4-дюймовий iPhone та можливі інші макети в майбутньому ..). Ось скріншот того, що відбувається:

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

І я отримую це в обмеженнях:

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

Як я можу змусити Interface Builder вирівняти верхню частину подання до верхньої інструкції з розміщення?

ОНОВЛЕННЯ 2: Я знайшов обхідний шлях. Спочатку я змінюю розмір подання, щоб зменшити його висоту (тому його верхня частина не буде перекриватися або знаходитись дуже близько до верхньої напрямної макета), А ПОТІМ я CTRL + перетягую її до верхньої напрямної макета. Здається, це працює правильно. Після його підключення я знову змінюю розмір вигляду до потрібного розміру та вибираю Update Constraints. Це працює, але все ще не є рішенням, оскільки вимагає зміни розміру подання, підключення, повторного зміни розміру та оновлення обмежень.


Привіт, майте таку ж помилку, як і при підключенні подання до Посібника верхнього макета. Спочатку це мене дуже бентежило, але знайшло такий самий спосіб вирішення проблеми, як і ви. Сподіваємось, це буде виправлено у майбутніх оновленнях ...
Таум

Я сподіваюсь на це .. Сумно бачити компанію, яка дійсно піклується про дизайн, щоб мати помилки в дизайні у своєму власному продукті, який використовується для проектування основних інтерфейсів.
Can Poyrazoğlu

Цей обхідний спосіб працює!
Лешек Зарна

Відповіді:


94

Щоб додати обмеження між поданням та його «суперпереглядом» (наприклад, «нижній простір для суперперегляду»), ви можете використовувати структуру документа (ліва частина Інтерфейсу).

У структурі документа:

  1. Утримуйте клавішу ctrl і перетягніть з подання до її "суперпрегляду" (або навпаки).
  2. Виберіть обмеження, які потрібно додати (у цьому прикладі "Нижній простір до контейнера").

ctrl-перетягніть з подання до його "суперпрегляду" (або навпаки) Виберіть обмеження, які потрібно додати


Чи це теж спрацює, якщо ви хочете встановити обмеження між кнопкою у поданні та панеллю вкладок під поданням (якщо припустити, що вид кнопки міститься в контролері панелі вкладок)?
AlexR

1
Якщо ви хочете встановити обмеження між кнопкою та панеллю вкладок, ви можете натиснути клавішу Ctrl і перетягнути контур документа від кнопки до нижнього керівництва по макету.
Яріг

4
Кожного разу, коли я намагаюся додати обмеження "верхній простір до верхнього макета", це перетворює його на обмеження "нижній простір до верхнього макета" з великим негативним значенням. Це помилка Xcode, чи я роблю щось не так?
bugloaf

3
Просто з’ясував власну проблему. Вигляд знаходився над керівництвом по макету (оскільки він вийшов з iOS 6), тому xcode намагався бути розумним, замість того, щоб робити те, що він сказав, що збирається. Рішенням було вибрати все і перетягнути його вниз під керівництвом по макету, хоча я намагався отримати Xcode, щоб зробити це автоматично.
bugloaf

3
Схоже, Vertical Spaceобмеження між Table Viewі Top Layout Guideне хоче бути нульовим або від’ємним. Ось що ви можете зробити: 1) Перемістіть Table Viewвниз принаймні на 1 пункт, щоб він не прилягав безпосередньо до Top Layout Guide. 2) Встановіть Vertical Spaceобмеження між Table Viewі Top Layout Guide- воно має бути зверху зараз. 3) Переведіть Table Viewспину в положення, яке безпосередньо прилягає до Top Layout Guide. 4) Виправте значення Vertical Spaceобмежень до нуля.
Яріг,

48

Відповідь Яріга хороша, але іноді може призвести до несподіваних результатів, як зазначено в коментарях.

Інший варіант - вибрати дочірній вигляд та перейти до:

Редактор> Прикріпити> Простір для перегляду

або будь-яке обмеження, яке ви хочете.


7
Це особливо корисно знати, оскільки намагаючись домогтися однакових результатів з контекстних меню, або перетягування елементів керування ніколи не надає опції "верхній простір для перегляду", це завжди "верхній простір до верхнього посібника макета" (Xcode51DP)
levigroker

7
ДЯКУЮ за це. Як зазначалося безпосередньо вище, якщо ваш батьківський подання є поданням для вашого контролера перегляду, Xcode, схоже, хоче надати "Верхній простір керівництву верхніх макетів", який не завжди є тим, що вам потрібно. Особливо при роботі з елементами управління, які автоматично враховують простір верхнього макета.
Michael McGuire

Дякую за альтернативне меню. Існує три способи створення обмежень, і вони не всі мають паритет.
Paul Solt

у моєму проекті відключено, що я можу зробити
codercat

1
ДЯКУЮ. Я витрачав багато часу, намагаючись виправити врізку tableView. Я знав, що маю закріпити верхній простір для суперперегляду. Але всі інші способи були відключені. Ти врятував мою ніч, тепер я можу лягти спати.
MIWMIB

1

Здається, це обмеження нижнього краю. Виберіть свій вигляд та його супервигляд, натисніть "Вирівняти" та встановіть прапорець "Нижні краї"

рис


1
це режим відключення, що я можу зробити
codercat

0

Якщо ви хочете додати кінцеві або ведучі обмеження, як у Xcode 4, будь ласка, перетягніть CTRL від центру подання, до якого ви хочете додати обмеження ліворуч, праворуч, вгору або вниз. Потім вам буде відкрито вікно, в якому ви можете вибрати обмеження, яке потрібно додати (залежно від напрямку, в якому ви перетягували CTRL).

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