Подтвердить что ты не робот

Ошибки компоновки Xcode 5 - Misplaced View Frame для Label будет отличаться во время выполнения

Я только что установил Xcode 5, и сейчас я готовлю свои приложения для выпуска в App Store на iOS 7 на следующей неделе. Тем не менее, я получаю целую кучу ошибок и предупреждений.

В одном приложении, где у меня есть UIPickerView, UITextFields и множество UILabels. В этом приложении он дает ошибку Illegal Configuration (красный) почти для всех элементов управления в файле раскадровки. Я не знаю, что это за ошибка или как ее исправить. Я был бы признателен за помощь в этом. Я не могу полностью воссоздать файл, потому что есть 20 сложных представлений.

В другом приложении есть UIScrollView, содержащий кучу UILabels и UITextFields, плюс один UITextView, который создается программно и содержит текст, основанный на том, что вы выбрали в (предыдущем представлении) UITableView, а также изменяя размер, чтобы соответствовать содержимому. UIScrollView изменяет размеры для размещения нового размера UITextView. Этот компилируется и создается, и UITextView создается, но не содержит текста, возможно, потому, что теперь он изменяет размер неправильно. UIScrollView теперь также прокручивается по горизонтали в дополнение к вертикали, что и не предполагается. Это дает только (желтые) предупреждения, которые все говорят:

Misplaced View Frame for "Label - Symbol:" will be different at run time. для 4 элементов управления, включая этот ярлык, а другой - текстовое поле и вид прокрутки.

Я был бы признателен за любую помощь в этом, потому что это первый раз, когда я настраиваю новую версию Xcode и iOS.

P.S: Подробности об ошибке Illegal Configuration включают:
Auto Layout on iOS Versions prior to 6.0

Спасибо!

4b9b3361

Ответ 1

Если вы все еще ищете ответ здесь, ответ, скорее всего, на вашем представлении AutoLayout не имеет ограничений или неправильных ограничений.

Вы можете исправить это, выбрав представление и перейдя в пункт меню Xcode: Editor -> Resolve Auto Layout Issues -> Add Missing Constraints / Reset to Suggested Constraints.

Вы также можете выбрать весь макет и сделать то же самое, это приведет к reset всем представлениям вашего макета к рекомендуемым ограничениям.

Если вам нужно выполнить пользовательские ограничения, вам нужно будет настроить свои собственные ограничения автоматического макета либо в файле Storyboard/XIB, либо вручную в коде.

Для получения дополнительной информации об автоматическом макете вы можете увидеть документацию Apple.

Наконец, вы также можете отключить автоматическую компоновку на макете, если хотите, чтобы она отображалась как есть, без автоматической настройки (это не рекомендуется).

enter image description here

Ответ 2

Reset to Suggested Constraints иногда не избавляется от этого предупреждения. Решение состоит в выборе Placeholder в раскрывающемся меню Intrinsic Size в инспекторе размеров рассматриваемого UIView. Затем добавьте недостающие ограничения по мере необходимости.

Ответ 3

Просто выберите контроллер вашего вида. Перейдите в

Редактор → Устранение проблем автоопределения → Очистить все ограничения в ViewController, и все готово.

Ответ 4

Относительно кадра "Рамка метки будет отличаться во время выполнения" - см. примечания к выпуску в разделе Autolayout: Runtime.

https://developer.apple.com/library/prerelease/ios/releasenotes/DeveloperTools/RN-Xcode/index.html#//apple_ref/doc/uid/TP40001051

Полный ответ будет показан здесь после отмены NDA.

Примечание: это также происходит и под Xcode 4.2, но проблема не всплывает IB.

Ответ 5

Теперь Xcode работает с относительной позицией против родительских представлений. Вы можете исправить их, чтобы щелкнуть по оранжевым линиям и щелкнуть по метке и выбрать значение раскадровки или что-то

Ответ 6

В качестве альтернативы вы можете полностью отключить автомат.

Этот подход пригодится, если вы хотите быть совместимым с iOS 5.

Ответ 7

Я также получал ту же ошибку в двух текстовых полях, которые я добавил в View controlller. Что помогло мне решить проблему: В документе Outline я Ctr + перетащил 1-ое текстовое поле до представления и выбрал Центр по горизонтали в контейнере. Затем я Ctr + перетащил второе текстовое поле в представление и выбрал Центр по вертикали в контейнере. Надеюсь, это тоже поможет вам.