переднее или конечное горизонтальное выравнивание до iOS 11

Предупреждение: leading or trailing horizontal alignment before iOS 11

Я получаю предупреждение выше во время компиляции в Xcode 9.1 в одной из сцен в файле раскадровки. Существуют и другие раскадровки (с целью развертывания iOS 10.0), но все же предупреждение отображается для этой конкретной сцены в конкретном файле раскадровки.

Предупреждение подавляется, если я изменяю цель развертывания на iOS 11.0 на сцене, где отображается предупреждение, но я не хочу этого делать.

Кто-нибудь сталкивался с этим случаем?


person Prabhav    schedule 23.11.2017    source источник


Ответы (4)


Для меня проблема заключалась в использовании выравнивания trailing leading на самом UIButton.

Кажется, что безопасная область вполне подходит для использования - она ​​обратно совместима и обеспечивает правильные поля супервизора.

Но эта функция доступна только для iOS 11, поэтому используйте стандартное выравнивание влево / вправо, если вы ориентируетесь на более ранние версии iOS.

Самый простой способ выяснить, какое представление вызывает проблему, - это поискать contentHorizontalAlignment="leading" или contentHorizontalAlignment="trailing" в исходном коде для .xib.

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

person Grzegorz Krukowski    schedule 18.12.2017
comment
ах, отличный совет @GrzegorzKrukowski, спасибо. Я случайно выбрал забавную новинку !!! - person Fattie; 30.05.2018
comment
Это решение создаст проблемы с выравниванием, если приложение поддерживает арабский язык. - person emreoktem; 29.04.2019

Шаг 1:

Просмотрите свою оскорбительную раскадровку как исходный код:  введите описание изображения здесь

Шаг 2:

Заменить все экземпляры:

contentHorizontalAlignment="leading"

с участием:

contentHorizontalAlignment="left"

Шаг 3:

Заменить все экземпляры:

contentHorizontalAlignment="trailing"

с участием:

contentHorizontalAlignment="right"

Шаг 4:

Скомпилируйте и посмотрите, как исчезнет предупреждение.

Мне этот подход проще, когда у вас есть тонна элементов, которые нужно изменить. Типы значений «ведущий» и «конечный» как «contentHorizontalAlignment» были введены в iOS 11. iOS 10 не знает о «начальном» и «конечном», которые являются причиной предупреждения.

person etayluz    schedule 08.06.2018
comment
Спасибо друг! Отличный ответ и по существу. Стоит отметить, что это нарушит раскладку справа налево (я считаю). - person Lucas P.; 01.08.2018

В журнале сборки прямо перед словом «предупреждение» вы увидите идентификатор Интерфейсного разработчика в форме «xxx-yy-zzz». Скопируйте и вставьте это в строку поиска Xcode, и он найдет для вас "оскорбительный" элемент управления. Щелкните результат поиска, и вы попадете прямо в раскадровку с выбранным соответствующим элементом управления. Остальную проблему можно решить с помощью других ответов.

person David Hoy    schedule 12.02.2019

У меня была эта проблема с целой кучей кнопок, которые мне нужно было выровнять по левому краю с небольшим смещением. Я удалил выравнивание раскадровки и сделал это в viewDidLoad с массивом нужных кнопок.

func indentButtons(buttons: [UIButton?]){
    for i in 0..<buttons.count{
        buttons[i]!.contentHorizontalAlignment = .left
        buttons[i]!.titleEdgeInsets = UIEdgeInsetsMake(0, 5, 0, 0)
    }
}
person user462990    schedule 08.06.2019