Xcode 6 Розташовування неправильного розміру?


139

Побудував новий проект з нуля у Swift у Xcode 6 (бета-версія 1) і побачив якусь дивну поведінку із дошками розкадрів та результатами, які я переглядаю.

Я створив простий інтерфейс (як показано нижче) - з включеними властивостями View Controller. Коли я запускаю це в тренажері, я б очікував, що "Привіт, світ" буде центральним у користувальницькому інтерфейсі - однак, здається, що цей "Квадрат" просто вписується в екран iPhone, і таким чином відображається неправильний погляд (див. Нижче ).

Моє запитання: чи бачив хто-небудь ще таку поведінку і як вони її виправили?

Дякую!

Вид з редактора розгортки

Атрибути інспектора

Інспектор розмірів

Вихід симулятора


додайте обмеження для автоматичного макета, які повинні це виправити. Ви зараз розробляєте для всіх макетів, тож автоматичні макети допоможуть вам відобразити вміст у "правильному" місці.
Раз

8
Поради: Використовуючи помічник редактора> автоматичний> Попередній перегляд, ви зможете побачити попередній перегляд екрана з усіма розмірами екрана
Francescu

Відповіді:


81

Хоча відповідь Асифа Білала - простіше рішення, яке не передбачає класів розмірів (які були представлені в iOS 8.), настійно рекомендується звикнути до класів розмірів, оскільки вони є майбутнім, і ви з часом все-таки стрибнете крапка ".


Напевно, ви не додали обмежень у компонуванні.

Виберіть етикетку, торкніться кнопки обмежень для макета внизу:

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

У цьому меню додайте ширину та висоту (вона НЕ повинна бути такою ж, як у моєї), встановивши прапорець і натисніть Додати обмеження. Потім натисніть клавішу Control і перетягніть мітку до основного вікна, а потім, коли ви натиснете клавішу, у вас повинні бути параметри центру в горизонтальному та вертикальному напрямку. Додайте обидва, і вам слід налаштувати.


1
Відмінно - це спрацювало для мене чудово - Дякую за допомогу (прийму вашу відповідь, коли таймер буде знято)
Candyfloss

1
Будь ласка. Це поведінка за замовчуванням з автоматичним розгортанням, яке тепер увімкнено за замовчуванням. Пам'ятайте, що через можливі різні розміри / макети екрану, повинен існувати спосіб обчислення місця розташування представлення відносно його батьківського пристрою, і авторозмітка виправляє цю проблему. якщо ви не додаєте цих обмежень, перегляд створює їх автоматично під час виконання, але відносно верхнього лівого кута. Якщо вам потрібно що-небудь інше (майже завжди потрібно щось інше), вам потрібно чітко вказати обмеження.
Може Poyrazoğlu

4
Зверніть увагу, що перетягування контролю (що може бути незручно) не потрібно. Кнопка зліва від вибраної на цьому зображенні відкриває меню, яке дозволяє закріплювати горизонтальний та вертикальний центри.
jrturton

Ви маєте рацію .. Я просто звик контролювати перетягування, тому я сказав це саме так.
Може Poyrazoğlu

@ CanPoyrazoğlu - Ви згадуєте "Виберіть свою етикетку". Яка мітка? У мене те саме питання з новим проектом iPhone, в якому я не маю етикетки чи інші елементи інтерфейсу користувача. Мій перший проект у Xcode 6, використовуючи Objective C.
rattletrap99

253

Виконайте наступні дії для вирішення проблеми

У розділі "Розгортка" виберіть будь-який вид і перейдіть до інспектора файлів. Зніміть прапорець "Використовувати класи розмірів", ви попросите зберегти дані про розмірний клас для: iPhone / iPad. А потім натисніть кнопку «Вимкнути класи розмірів». Це зробить розмір перегляду рекламної дошки за допомогою вибраного пристрою.


8
Це правильна відповідь, якщо ви отримуєте контролер перегляду розміром 600x600, коли хочете, наприклад, стандартний контролер розміру iPhone.
Fraggle

5
Це має бути правильна відповідь (принаймні для тих, хто працює лише на неуніверсальній платформі)
Raptor

36
Я не знаю, чому люди позначили це правильною відповіддю ... Перший - це так, як це слід зробити ... Якщо вам не подобаються обмеження у компонуванні, ніж ви йдете в зворотному напрямку ... Apple використовує переваги хороший спосіб розвитку для всіх розмірів iPhone та iPad, і ви просто хочете повернутися до старих речей? Тому що ви не можете дозволити собі оновлення? Ніколи не проголосував, але, здається, ця відповідь бентежить людей і змушує тоді використовувати старий підхід (який буде застарілим), а не заохочувати потім використовувати нові речі ...
Рафаель Айрес

3
Найвища відповідь для всіх, хто звик до
рекламних дошок

3
Використовуйте обмеження у макеті ... Apple робить це так само, як працює Android. Вид не має форми ... Іноді це може бути болем, але якщо ви змусите розмір, ваш додаток буде виглядати погано на різних розмірах пристроїв. Якщо ви хочете, щоб кнопка з’явилася у правому нижньому куті, просто створіть для неї 2 обмеження та заборонити ... не вибирати X чи Y. Все буде встановлено Двигуном. Використовуйте внутрішні розміри. Використовуйте свою фантазію. Використовуйте реляційні обмеження. Дізнайтеся це ***.
Рафаель Айрес

18

Якщо ви використовуєте Xcode 6 і проектуєте для iOS 8, жодне з цих рішень не є правильним. Щоб правильно переглянути розміри представлень лише для iPhone, не вимикайте класи розмірів, не вимикайте зроблені показники та не встановлюйте обмежень (поки що). Замість цього скористайтеся класом управління розміром, який легко пропустити текстову кнопку в нижній частині Інтерфейсу Builder, який спочатку читає "WAny hAny".

Натисніть кнопку та виберіть компактну ширину, регулярну висоту. Це дозволить змінити розмір ваших поглядів і охопити всі портрети iPhone-орієнтації. Документи Apple тут: https://developer.apple.com/library/ios/recipes/xcode_help-IB_adaptive_sizes/chapters/SelectingASizeClass.html або пошук у розділі "Вибір класу розмірів у програмі Interface Builder"


Я вважаю, що корисно перечитати всю Довідку з дизайну розмірів класів за вашим посиланням, тобто від проектування для класів кількох розмірів до розгортання програми з класами розмірів на попередніх версіях iOS .
Франклін Ю

Це чудове рішення, якщо ви хочете зберегти автоматичну компоновку, але хочете, щоб види на дошці зображень виглядали як пейзаж або портрет замість квадрата.
Stephenspann

5

У розділі розкадрування виберіть свій ViewController та перейдіть до Atribute Inspector. У самому верху, у розділі Імітовані метрики, ви маєте властивості розміру та орієнтації, які встановлені на Inferred. Змініть їх на потрібні значення.

Для того, щоб програма відображалася належним чином на іншому розмірі екрана, вам також доведеться встановити обмеження, як це описав Can Poyrazoğlu у першій публікації.


5

У мене виникла ця проблема в xcode 6, і є спосіб вирішити конфлікти розміру. Якщо ви обрали свій погляд, внизу ви побачите піктограму, яка виглядає як | -Δ- |. Якщо ви натиснете на нього, проект буде змінювати розмір для різних пристроїв.


Так, і після вибору символу трикутника натисніть на додавання відсутніх обмежень, і ви зробите перегляд, буде змінено розмір відповідно до розміру пристрою, якщо його універсальний додаток
vishal dharankar

3

Перейдіть до інспектора атрибутів (правий верхній кут) у модельованій метриці, яка має властивості розміру, орієнтації, рядка стану, верхнього рядка, нижньої панелі. Для SIZE змініть Inferred -> Freeform.


+1 @Rachel дякую вам за цю корисну підказку щодо імітованих показників -> Розмір: "Freeform" (він же, мабуть, "увімкніть нестандартний розмір для багаторазового використання Xib, підкріпленого спеціальним поданням").
cweekly

3

На сторінці розкадрівки перейдіть до Інспектора файлів і зніміть прапорець "Використовувати класи розмірів". Це має зменшити ваш контролер перегляду до звичайного розміру IPhone, з яким ви були знайомі. Зауважте, що використання "класів розмірів" дозволить вам розробляти проект на багатьох пристроях. Після того, як ви знімете цей прапорець, Xcode надасть вам попереджувальний діалог наступним чином. Це має бути роз'яснювальним.

"Вимкнення класів розмірів обмежить цей документ збереженням даних для однієї сімейства пристроїв. Дані для класу розмірів, який найкраще представляє цільовий пристрій, будуть збережені, а всі інші дані будуть видалені. Крім того, сеги будуть перетворені на їх -придатні еквіваленти. "


3

Для всіх, хто використовує XCode 7, дуже легко спроектувати конкретний розмір пристрою (замість полотна квадратного шкали за замовчуванням).

У програмі Interface Builder виберіть ViewController або Scene у лівому меню. Потім під Show the Attributes Inspector, перейдіть до меню Simulated Metricsта виберіть потрібне Sizeзі спадного меню.


Це дозволить вам лише розробити у своїй дошці розкадрування для цього пристрою. Коли ви запускаєте додаток, його дизайн може різко відрізнятися для різних розмірів екрана.
Joey Tawadrous

@JoeyTawadrous Рівно. Але він відповідає на поставлене питання :)
Священик

2

Ви, ймовірно, використовуєте "Вирішити проблеми автоматичного макета" (праворуч внизу - значок трикутника у вигляді подання дошки), щоб додати / скинути до запропонованих обмежень (Xcode 6.0.1).

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