Ограничения компоновщика интерфейса компоновки возникают после Xcode 8
Так как я обновил свой проект Swift до Swift 2.3 и Xcode 8 (выпуск версии), я больше не могу получить свой интерфейс...
![введите описание изображения здесь]()
Я полностью настраиваю все ограничения. Все работает нормально. Я снова открываю Xcode на следующий день, и все мои представления выглядят так.
Также я получаю массу предупреждений...
![введите описание изображения здесь]()
Если я нажму кнопку Update Frame
, предупреждение исчезнет, и вид снова выглядит нормально. Но как только я перезапущу Xcode (или иногда даже просто создаю проект), он снова отменяется...
![введите описание изображения здесь]()
Важно. Все представления выглядят PERFECT и, как требуется, внутри любых устройств, но очень сложно сохранить обзор.
Я потратил целую ночь, заменив все элементы моего текущего проекта. Все было в порядке без каких-либо предупреждений. На следующий день. Предупреждения назад, и я ничего не изменил... Как мне избавиться от этого? Помощь очень ценится.
![введите описание изображения здесь]()
Я могу "обновить фрейм", все снова выглядит хорошо. После нескольких сборок или самого последнего после повторного открытия Xcode это снова выглядит.
Последний пример: Экстремальный простой экран. UIViewController. UINavigationBar. UITableView. Никаких переходов. Одна прототипная ячейка.
![введите описание изображения здесь]()
Устанавливал все ограничения отлично прошлой ночью. Открыт Xcode. Нашли это.
Изменить:
Предлагаемый подход для переключения желаемого имитируемого размера контроллера на произвольную форму в инспекторе, а затем обновления кадров, является лишь временным решением. Как только я снова открою Xcode, все предупреждения снова вернутся. Я могу изменить значение на фиксированное, тогда все элементы "отскакивают" в нужное положение и предупреждения исчезают → снова открывают Xcode, и все предупреждения возвращаются, а элементы контроллера снова находятся в падении.
![введите описание изображения здесь]()
Также предложение об изменении типа файла раскадровки на 7.x не оказало никакого эффекта. Я нажал 7.x, он спросил меня, хочу ли я изменить. Нажато ok. Loaded. Я открыл main.storyboard, и он спросил меня, в каком устройстве я хочу открыть раскадровку. Затем Xcode 8.0 был повторно выбран.
![введите описание изображения здесь]()
Ответы
Ответ 1
Я работаю над большим проектом с несколькими раскадными файлами и множеством контроллеров view. Имели такие же проблемы для большинства из них. И предположил, что это происходит, потому что Xcode теперь поддерживает ограничения с десятичными значениями.
Здесь исправлено все мои UITableViews и UICollectionViews:
1) Удалите только одно из ограничений "Height equals: xx" из одного из ваших представлений внутри ячейки.
2) Обновление всех фреймов.
3) Выберите вид, на который вы удалили ограничение.
4) Нажмите, чтобы добавить новую кнопку ограничения. Теперь он должен показывать новую высоту, возможно, с десятичным значением.
5) Добавьте ограничение высоты без изменения значения внутри поля.
Теперь ваша проблема должна быть исправлена для этой ячейки. Повторите эти шаги для всех разбитых ячеек. Надеюсь, что это решение будет работать и на вас. Удачи!
Ответ 2
Быстрое обходное решение: измените имитируемый размер требуемых контроллеров на произвольную форму в инспекторе, а затем обновите фреймы. Похоже, что на эти новые функции Xcode 8 IB не влияют контроллеры свободной формы:)