Я использовал autolayout добавить новые ограничения, чтобы сделать простые ограничения для суперпредставления / относительного представления, как это (для долгого времени):
Однако недавно, после обновления до последнего xcode (11.3.3 или просто 11.3 / 11C29), у меня возникла странная проблема: когда я устанавливаю константу = 0, они всегда генерируют ограничения нежелательным образом, например так:
И кажется, что значение по умолчанию равно 20, и мой взгляд выглядит так неправильно (0 по сравнению с 20?)
Если я исправлю это, отредактирую ограничение следующим образом:
Затем оно будет исправлено снова (изображение после редактирования ограничений, перед редактированием отображает константу = Standard
)
Я даже не знаю, как описать проблему, но как я могу исправить это новое, add new constraint
чтобы использовать точку моего желания вместо стандартного / по умолчанию?
Обновить:
Кажется, это произошло только тогда, когда ограничение на супервизию. Понятия не имею, как это исправить.
Обновление Апр-01-2020:
Xcode11.4 исправил это.
standard
значение (поэтому мы можем установить 10 или 0 вместоdefault = 8
), но я забыл, где оно сейчас. Или, может быть, они удалили функцию?Ответы:
Похоже, ошибка (не забудьте подать в Apple). Вот простой обходной путь:
При заполнении числа в «пирог», вместо ввода
0
, типа0.01
. Это предотвратит загадочное изменение числа на «Стандарт». Хорошо, это0.01
не то же самое,0
но это достаточно близко, чтобы вы не могли заметить разницу, и, по крайней мере, вам не нужно возвращаться и изменять это позже.EDIT Apple говорит, что эта ошибка будет исправлена в Xcode 11.4:
источник
Пока обходится обход @matt, я просто хочу добавить, что вы можете установить его на 0,01, а затем изменить его на 0, он снова не изменится на стандартное значение. Примечание: Xcode 11.3
источник
Начиная с Xcode 11.3.1:
Самое быстрое и быстрое решение, которое я нашел, заключается в следующем:
Просто введите в
-0
поле ограничения. Xcode, по-видимому, отбрасывает негатив и ведет себя правильно, что лучше, чем читать0.01
все.Вы можете вставить все ограничения сразу, без необходимости вносить по одному за раз или перейти и редактировать позже.
Xcode отображает значения как это
Это кажется действительно глупым поведением. Есть ли причина, по которой Apple могла сделать это намеренно ...?
Редактировать: Кажется, это не работает каждый раз , что расстраивает. Я только что UIImageView показывал от 0 до Superview, но все еще визуально был со значением по умолчанию (20). Это действительно похоже на ошибку с IB, поскольку поведение совершенно нелогично.
источник
Это поведение, кажется, исправлено в Xcode 11.4: заметки о выпуске
Оригинальный ответ:
Я только что нашел это поведение, я попытался добавить ограничения 1 на 1, и XCode фактически соблюдает значение 0.
Мои два цента.
источник
Я знаю, что это не решение, но для временного решения, которое не позволит вам пройти через все ограничения, я просто обнаружил, что вы получаете желаемое поведение, если вы вставляете «-0» вместо «0», но вы должны вставить один ограничение каждый раз.
источник
На самом деле нет способа решить эту проблему в настоящее время
но лучшее временное решение состоит в том, чтобы добавить ограничения с нулем один за другим.
источник
игнорировать это, когда стандарт.
после добавления нажмите на ограничение (синяя линия) и инспектор, чтобы ограничить атрибут и установите его в 0.
это работа для меня
источник
Все еще испытывает эту ошибку (Xcode 11.3.1). Исправили это, просто добавив ограничения как «стандартные», затем щелкнув по синим линиям ограничений и установив «константу» под инспектором размера на 0.
источник