Колеги-розробники, у мене проблеми з AutoLayout в Interface Builder (Xcode 5 / iOS 7). Це дуже просто і важливо, тому я думаю, кожен повинен знати, як це правильно працює. Якщо це помилка в Xcode, вона є критичною!
Отже, кожного разу, коли у мене є така ієрархія перегляду, я стикаюся з проблемою:
>UIViewController
>> UIView
>>>UIScrollView
>>>>UILabel (or any other comparable UIKit Element)
UIScrollView має суцільні обмеження, наприклад, 50 пікс з кожної сторони (без проблем). Тоді я додаю обмеження у верхньому просторі до UILabel (без проблем) (і я можу навіть прикріпити висоту / ширину мітки, нічого не змінює, але повинно бути непотрібним через внутрішній розмір мітки)
Проблема починається, коли я додаю обмежувальне обмеження до UILabel:
Напр., Відстань від місця до: огляд рівний: 25
Зараз виникають два попередження - і я не розумію, чому:
A) Невизначеність розміру вмісту, що прокручується (Перегляд прокрутки має неоднозначну висоту / ширину вмісту, що прокручується)
B) Неправильне розміщення переглядів (очікувана мітка: x = -67 Фактична: x = 207
Я зробив цей мінімальний приклад у нещодавно новому проекті, який ви можете завантажити, і я додав скріншот. Як бачимо, Interface Builder очікує, що Мітка буде за межами межі UIScrollView (помаранчевий пунктирний прямокутник). Оновлення кадру мітки за допомогою інструмента вирішення питань переміщує її прямо туди.
Зверніть увагу: Якщо ви заміните UIScrollView на UIView, поведінка є такою, як очікувалося (рамка Мітки правильна і відповідно до обмеження). Тому, здається, що з UIScrollView виникає проблема, або я пропускаю щось важливе.
Коли я запускаю додаток, не оновлюючи рамку мітки, як запропонував IB, вона розміщується просто добре там, де вона повинна бути, і UIScrollView прокручується. Якщо я НЕ оновлюю кадр, мітка не видно, і UIScrollView не прокручується.
Допоможи мені Оби-Ван Кенобі! Чому неоднозначна компоновка? Чому неправильний вигляд?
Ви можете завантажити зразковий проект тут і спробувати, чи можете ви зрозуміти, що відбувається: https://github.com/Wirsing84/AutoLayoutProblem
UIScrollView
безпосередньо. Замість цього використовуйте UICollectionView
або UITableView
наскільки це можливо, в основному можлива кожна річ з цими елементами, і це також дає простоту, читабельність та повторність використання !!!