Xcode 11 добавляет новые ограничения, устанавливающие ноль: используйте установленное значение вместо значения по умолчанию / стандарта


74

Я использовал autolayout добавить новые ограничения, чтобы сделать простые ограничения для суперпредставления / относительного представления, как это (для долгого времени):

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

Однако недавно, после обновления до последнего xcode (11.3.3 или просто 11.3 / 11C29), у меня возникла странная проблема: когда я устанавливаю константу = 0, они всегда генерируют ограничения нежелательным образом, например так:

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

И кажется, что значение по умолчанию равно 20, и мой взгляд выглядит так неправильно (0 по сравнению с 20?)

Если я исправлю это, отредактирую ограничение следующим образом:

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

Затем оно будет исправлено снова (изображение после редактирования ограничений, перед редактированием отображает константу = Standard)

Я даже не знаю, как описать проблему, но как я могу исправить это новое, add new constraintчтобы использовать точку моего желания вместо стандартного / по умолчанию?

Обновить:

Кажется, это произошло только тогда, когда ограничение на супервизию. Понятия не имею, как это исправить.

Обновление Апр-01-2020:

Xcode11.4 исправил это.


2
Та же проблема здесь. Я думаю, что это появилось впервые, когда я обновил до 11.3 UPD: тот же проект не имеет этой проблемы на другом компьютере с той же версией xcode. Может быть, это связано с конфигурацией IDE или это ошибка самой IDE.
Дмитрий Рогов

1
Та же проблема здесь. Используя Xcode 11.3 (11C29).
user525504

1
Та же проблема Версия 11.3 (11C29)
user832

1
@DmitrijRogov Я иногда вспоминал (xcode 8,9 или 10), где-то есть настройка, которая помогает нам определить standardзначение (поэтому мы можем установить 10 или 0 вместо default = 8), но я забыл, где оно сейчас. Или, может быть, они удалили функцию?
Эдди

5
Это сводит меня с ума
Buyin Brian

Ответы:


37

Похоже, ошибка (не забудьте подать в Apple). Вот простой обходной путь:

При заполнении числа в «пирог», вместо ввода 0, типа 0.01. Это предотвратит загадочное изменение числа на «Стандарт». Хорошо, это 0.01не то же самое, 0но это достаточно близко, чтобы вы не могли заметить разницу, и, по крайней мере, вам не нужно возвращаться и изменять это позже.

EDIT Apple говорит, что эта ошибка будет исправлена ​​в Xcode 11.4:

Исправлена ​​ошибка, которая не позволяла вводить константу 0 в всплывающих редакторах ограничений. (54076090)


1
хорошая работа вокруг, спасибо!
Эдди

1
Большой! Что может раздражать этот вопрос ..
Хоакин Перейра

Это работает нормально, когда я использую 0,01 вместо 0
Teja

Но установка его в 0 второй раз работает. Зачем беспокоиться с 0,01? Это довольно раздражает в любом случае. Хорошо, что это ошибка, а не «фича».
Влад Русу

11

Пока обходится обход @matt, я просто хочу добавить, что вы можете установить его на 0,01, а затем изменить его на 0, он снова не изменится на стандартное значение. Примечание: Xcode 11.3


Для меня, когда я изменяю его обратно на 0, он снова меняется на «стандартный». Xcode 11.3.1.
Джон Скало

10

Начиная с Xcode 11.3.1:

Самое быстрое и быстрое решение, которое я нашел, заключается в следующем:

Просто введите в -0поле ограничения. Xcode, по-видимому, отбрасывает негатив и ведет себя правильно, что лучше, чем читать 0.01все.

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

Xcode отображает значения как это

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

Редактировать: Кажется, это не работает каждый раз , что расстраивает. Я только что UIImageView показывал от 0 до Superview, но все еще визуально был со значением по умолчанию (20). Это действительно похоже на ошибку с IB, поскольку поведение совершенно нелогично.


9

Это поведение, кажется, исправлено в Xcode 11.4: заметки о выпуске

Исправлена ​​ошибка, которая не позволяла вводить константу 0 в всплывающих редакторах ограничений. (54076090)


Оригинальный ответ:

Я только что нашел это поведение, я попытался добавить ограничения 1 на 1, и XCode фактически соблюдает значение 0.

Мои два цента.


Да, я просто заметил, что в примечаниях к выпуску тоже хорошо сделано.
Мэтт

5

Я знаю, что это не решение, но для временного решения, которое не позволит вам пройти через все ограничения, я просто обнаружил, что вы получаете желаемое поведение, если вы вставляете «-0» вместо «0», но вы должны вставить один ограничение каждый раз.


на самом деле это хороший вариант, добавив «-0», когда вы создаете ограничения, которые будут
равны

1

На самом деле нет способа решить эту проблему в настоящее время

но лучшее временное решение состоит в том, чтобы добавить ограничения с нулем один за другим.


0

игнорировать это, когда стандарт.

после добавления нажмите на ограничение (синяя линия) и инспектор, чтобы ограничить атрибут и установите его в 0.

это работа для меня


0

Все еще испытывает эту ошибку (Xcode 11.3.1). Исправили это, просто добавив ограничения как «стандартные», затем щелкнув по синим линиям ограничений и установив «константу» под инспектором размера на 0.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.