Причина поиска "Автоматическая предпочтительная максимальная ширина макета недоступна в версиях iOS до 8,0"

Я знаю причину этого предупреждения и как его решить: дать предпочтительную ширину этикетке.

Проблема в том, что когда я нажимаю это предупреждение, я не вижу, чтобы выбранный ярлык /view/viewcontroller был выбран. Раскадровка открывается и что она. В моей раскадровке есть много контроллеров просмотра со многими видами. Как узнать, какой ярлык вызывает проблему, без повторного запуска через все контроллеры представлений вручную? Когда я нажимаю предупреждение, я ожидаю, что он приведет меня к виду, вызывающему предупреждение, но он просто открывает раскадровку.

Ответ 1

Вот один из способов найти конкретную метку, которая вызывает это предупреждение:

  • Щелкните правой кнопкой мыши предупреждение и выберите "Показать в журнале"
  • Предупреждение в журнале будет выделено. Скопируйте идентификатор объекта компоновщика интерфейса для этой метки (это выглядит как xxx-xx-xxx).
  • Вставьте это в Навигатор поиска. Когда вы нажмете на этот результат, он откроет конструктор интерфейса с выбранным ярлыком.

Ответ 2

Запуск XCODE 6.1, я нашел самый простой способ найти ошибку, с помощью Навигатора отчетов.

  • ViewNavigatorsShow Report Navigator или просто нажмите ⌘-8
  • Нажмите на сборку в левой панели.
  • Нажмите значок сведений рядом с предупреждением.

enter image description here

  1. Найти идентификатор объекта в описании предупреждения.

enter image description here

  1. Перейдите в файл и выполните поиск ⌘-f для идентификатора объекта.

enter image description here

  1. Исправить проблему. Автоматическая предпочтительная максимальная ширина макета недоступна в версиях iOS до 8.0

Ответ 3

Как сказано в этом сообщении, вы также можете использовать это регулярное выражение < label (?!. * preferredMaxLayoutWidth) в источнике раскадровки, чтобы найти все метки, которые не имеют предпочтительнойMaxLayoutWidth. Затем исправьте его.

Ответ 4

Ответа на этот вопрос @Don Eichenseer. Но для тех, кто хочет ее решить: У меня такая же проблема. Проблема заключалась в том, что UILabel, для которого свойство Lines (в инспекторе атрибутов) было больше 1. Когда вы нашли связанный UILabel, установите для него Lines значение 1.

Ответ 5

просто удалите количество строк из метки и установите его программно

[label setNumberOfLines:2];

Ответ 6

Это предупреждение из коллекции? Если это так, я бы предположил, что это ячейка и метка с числом строк, установленным в ноль.

Ответ 7

У меня была та же проблема в существующем проекте, разработанном в 7.1 без автозапуска. Как только я перенес приложение в iOS8 и изменил в файле проекта версию до 8.0, по какой-то причине я получил это предупреждение в Xib, где использовал UILabel с несколькими строками.

чтобы исправить проблему, выберите инспектор файлов для Xib и проверьте версию, для которой он создан, в моем случае он все еще был для iOS7

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

вы должны изменить Build для соответствующей версии

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

и предупреждение исчезнет, ​​как в моем случае: -)

Ответ 8

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