Я открыл существующий проект iOS с бета6 Xcode6, и Xcode перечисляет следующее предупреждение для файлов Storyboard и Xib:
Автоматическая предпочтительная максимальная ширина макета недоступна в версиях iOS до 8.0
Я попытался обратиться к предупреждению, установив ширину, как показано ниже:
Тем не менее, это не разрешило предупреждения. Как их можно удалить?
ios
autolayout
ios8
xcode6
мононуклеоз
источник
источник
Ответы:
Обновление 3:
Это предупреждение также может быть вызвано метками, для которых
numberOfLines
установлено любое значение, кроме 1, если целью развертывания является значение 7.1. Это полностью воспроизводимо с новым проектом с одним представлением.Действия по воспроизведению:
Я подал следующий радар:
rdar: // problem / 18700567
Обновление 2:
К сожалению, это снова в выпускной версии Xcode 6. Обратите внимание, что по большей части вы можете вручную отредактировать свою раскадровку / xib для решения проблемы. Пер Чарльз А. в комментариях ниже:
Обновление 1:
эта ошибка была теперь исправлена в Xcode 6 GM.
Оригинальный ответ
Это ошибка в Xcode6-Beta6 и XCode6-Beta7, которую можно пока игнорировать.
Инженер Apple , на форумах разработчиков Apple , было это , чтобы сказать об ошибке:
Кроме того, вы можете обойти эту проблему, используя инспектор файлов на раскадровке или xib, о котором идет речь, и измените «Builds for» на «Builds for iOS 8.0 и более поздние версии».
источник
<label(?!.*preferredMaxLayoutWidth)
чтобы найти метки, в которых отсутствуетpreferredMaxLayoutWidth
атрибут / значение. Если вы добавите вpreferredMaxLayoutWidth="0"
такие строки, это то же самое, что пометить явное и установить значение0
.numberOfLines
него установлено значение, отличное от 1, предупреждение будет появляться независимо от того,preferredMaxLayoutWidth
установлен он или нет.preferredMaxLayoutWidth
явный 0, предупреждение исчезнет, независимо отnumberOfLines
значения. Но возможно это было исправлено в обновлении XCode этим утром?Чтобы найти метки проблем в большой раскадровке, выполните следующие действия.
Далее покажите свою раскадровку как исходный файл.
Поиск. Вы должны быть в состоянии определить, что это за ярлык, просто посмотрев на содержимое.
Как только вы найдете метку, решение, которое сработало для меня, состояло в том, чтобы установить «предпочтительную ширину» на 0
Кстати, вы всегда можете быстро получить идентификатор элемента интерфейса, выбрав элемент и заглянув под инспектор идентификации. Очень кстати.
источник
Вы можете исправить эту проблему, не открывая раскадровку в качестве источника . UILabels выдает это предупреждение, если numberOfLines! = 1 и цель развертывания <8.0
КАК НАЙТИ ЭТО?
источник
Решение это довольно просто
Просто включите сборки для iOS 8 и новее
источник
Теперь моя версия Xcode 6.1. Но я тоже получил это предупреждение. это меня сильно раздражает. после поиска снова и снова. Я нашел решение.
Причина: Вы должны установить линии UILabel> 1 в раскадровке.
Решение: установите для атрибута UILabel Lines значение 1 в раскадровке. перезапустите свой Xcode. Это работает для меня, надеюсь, это может помочь большему количеству людей.
Если вам действительно нужно показать свои слова более чем на 1 строку. Вы должны сделать это в коде.
источник
Подводя итог, я следовал двум приведенным выше инструкциям, чтобы изменить любые экземпляры, где numberOfLines = от 0 до 1 или больше, и вручную добавив предпочитаемый параметр MaxMayayWidth = "0" к каждому экземпляру метки в источнике раскадровки, исправил все мои предупреждения.
источник
Так как у меня нет репутации Stackoverflow за 50, я не буду комментировать второй лучший ответ. Нашел еще один трюк для поиска ярлыка виновника в раскадровке.
Поэтому, как только вы узнаете идентификатор метки, откройте раскадровку на отдельной вкладке с отображаемыми контроллерами представления и просто выполните команду F и команду V, и вы попадете прямо к этой метке :)
источник
Я получил его, выбрав оригинальный макет, который я имел в выборе W / H. Раскадровка работает как положено, и ошибка исчезла.
Также будьте уверены, что вы разрабатываете для iOS 8.0. Проверьте это из общих настроек проекта.
Это где вы должны нажать.
источник
У меня была эта проблема, и я смог ее исправить, добавив ограничения, чтобы определить максимальное значение для метки.
При добавлении многострочной метки не устанавливается ограничение для обеспечения ширины внутри родительского представления. Это где новый PreferredMaxWidth вступает в игру. На iOS 7 и более ранних версиях вы должны определить максимальную ширину самостоятельно. Я просто добавил ограничение в 10 пикселей в левую и правую часть метки.
Вы также можете добавить ограничение <= width, которое также устраняет проблему.
Так что это на самом деле не ошибка, вы просто должны определить максимальную ширину самостоятельно. Явное упоминание опции в другом ответе также будет работать, когда вы устанавливаете это значение ширины, однако вам придется изменить это значение, если вы хотите, чтобы максимальная ширина изменялась в зависимости от родительской ширины (так как вы явно задали ширину).
Мое решение выше гарантирует, что ширина всегда поддерживается независимо от размера родительского представления.
источник
По какой-то причине, даже если изменить iOS Deployment Target на 8.0 или выше, Xib-файлы не принимают это изменение и остаются с предыдущими настройками в Инспекторе файлов.
Таким образом, вы должны изменить его вручную для каждого Xib
После этого предупреждение исчезнет :-)
источник