Это предупреждение происходит в Xcode 6.1. У кого-нибудь есть идеи, что означает это предупреждение и что с ним будет? Большое спасибо!
Ниже скриншот с открытыми предупреждениями в исходном коде
Как найти, какое ограничение вызывает предупреждение? Xcode не говорит вам, какое ограничение является проблемой.
ios
xcode
cocoa-touch
storyboard
xcode6
Чжихао ян
источник
источник
Ответы:
Это предупреждение может раздражать и возникает с Xcode 6.1.1. Основная проблема заключается в том, что вы не можете легко найти указанное ограничение, нажав на предупреждение. Я думаю, что это ошибка, и она будет исправлена рано или поздно.
Тем не менее, тем временем вы можете использовать этот маленький обходной путь:
Шаг 1: Обнаружить раздражающее предупреждение 😱
Шаг 2: Право / Ctrl-клик по предупреждению, выберите
Reveal in Log
😨Шаг 3: Полюбуйтесь красотой следующего фрагмента журнала:
Хммм ... Что это ...?
Шаг 4: Давайте добавим это в строку поиска проекта ... 😐
😮 Да, вы правильно догадались. Нажмите на это.
Шаг 5: 😁 Боже мой! Наслаждайтесь несколькими дополнительными минутами производительности, пока Apple не исправит эту досадную ошибку. 😎
На 2016 год ...
Обратите внимание, что для Xcode от 5/2016, к сожалению, вы должны выйти и перезапустить Xcode, чтобы очистить это предупреждение в некоторых случаях.
Обратите внимание, что такая же ошибка может быть вызвана не связанной с этим проблемой (это может быть ошибка Apple или плохое использование языка ошибок): если у вас есть
IBInspectable
элементы, и вы можете переименовать их в ваших файлах Swift. XCode не удаляет старое имя UserDefinedRuntimeAttributes для вас. Просто нажмите «Identity Inspector» (пункт 3 на правой панели) и удалите ненужные элементы.На 2017 год ...
источник
Это сообщение появляется, когда вы деактивировали представление в раскадровке, но не деактивировали ограничения, основанные на этом представлении.
Например, вы деактивировали кнопку, но у вас все еще есть некоторые ограничения, связанные с этой кнопкой. Это может быть внутреннее ограничение, например, высота или ширина, или относительное ограничение, например, расстояние от другого вида.
Вы должны отключить каждое из ограничений, относящихся к представлению, и сделать это вручную. XCode здесь слишком консервативен и не сделает этого за вас.
источник
Это решение работает для меня.
Поскольку я скопировал несколько элементов из проекта, который разработал в Xcode 5, в Xcode 6, а раскадровка в Xcode 6 поддерживает несколько макетов, для каждого ограничения мне необходимо установить его в текущей конфигурации.
Например, я использую «Компактная ширина | Обычная высота», для ограничения, которое мне нужно установить, как показано ниже:
После того, как я проверил и установил все сотни ограничений в своих проектах, очистил и собрал, предупреждения, наконец, исчезли.
источник
Installed
в атрибутах объекта просмотра есть и эти надоедливые флажки. Поэтому убедитесь, что для отображаемых объектов, которые, по вашему мнению, отображаются , установлен правильный флажок. Предупреждение говорит о том, что некоторые объекты не отображаются вcurrent configuration
.Просто хотел добавить мой случай, как эта ошибка произошла для меня: в моем случае я хотел удалить текстовое поле с помощью «Cmd + Backspace». Я сделал это непосредственно в Дереве просмотра сцены:
Вы можете видеть, что поле повтора серое.
Так что это было легко обнаружено для меня. Вы можете просто удалить поле, выбрав:
Редактировать-Удалить из меню
Удивительно, но это действительно удаляет поле (включая ограничения). Может быть, это поможет кому-то легко найти причину этого досадного предупреждения ...
источник
Расширенное объяснение
Ничего плохого в других ответах. Я просто хотел привлечь внимание к формулировке в исходном предупреждении и определить пару вариантов использования, где это может проявиться в рабочем процессе.
Это означает, что некоторый элемент (обычно видимый элемент управления или пользовательский вид), на который ссылаются в одном или нескольких ограничениях, отключен (отключен или флажок «установлен» снят). Например, если вы решили, что хотите переместить элемент управления или представление в раскадровке за пределы основного представления (или вы можете иногда это видеть при выполнении чего-то интересного в классах размеров), вы можете увидеть это предупреждение, если к элементу управления прикреплены ограничения. ,
Наряду с рекомендуемым решением:
Два подхода к исправлению
Схема документа
Визуально вы можете открыть схему документа в раскадровке и найти выделенные серым цветом ограничения, которые относятся к вашему элементу управления / представлению, находящемуся вне основного вида (расширить контур, щелкнуть ограничение и просмотреть инспектор атрибутов, проведите мышью вниз, чтобы быстро просмотреть) , Затем удалите ограничение из этого контекста (класс размера). Например, в моем случае я просто удерживаю элемент управления до тех пор, пока не решу позже, где его представить, поэтому я решил полностью удалить нарушающее ограничение до следующего. Но в классе размеров я бы просто удалил ограничение из текущего контекста, используя установленный флажок в инспекторе атрибутов.
Log Navigator / Find Tool
Можно также продолжать использовать Log Navigator для поиска проблемного управления по уникальному идентификатору, присваиваемому каждому объекту на раскадровке. В журнале это будет непосредственно перед выделенным желтым текстом и обычно принимает форму, как показано в моем примере выше: jvj-mY-DHf
Используя идентификатор, можно затем использовать инструмент поиска в XCode, чтобы найти и удалить (полностью) или удалить (для текущего контекста) нарушающее ограничение.
Если вам нравится Xml и его простота, вы также можете просто открыть раскадровку в качестве исходного кода и найти уникальный идентификатор, вызывающий проблемы, и удалить соответствующий блок xml.
источник
Одна из причин, по которой это может произойти, заключается в том, что вы выбрали класс размера, не совместимый с вашими ограничениями (
wAny hAny
это частый случай). В этом случае просто выберите другой класс размера в Интерфейсном Разработчике, и все готово.источник
Для меня это происходит, если я устанавливаю объекту новое противопоказание для объекта (не для просмотра) с опцией «Ограничение на полях», не отмеченной галочкой. Проблема решена с помощью галочки (по умолчанию).
источник
Что сработало для меня (и я понятия не имею, почему), так это отключить «Использовать вариации черт», затем выполнить очистку, а затем снова включить их. Следующая сборка не имела предупреждений.
Чтобы отключить «Использовать варианты признаков», просто выберите раскадровку в Навигаторе проекта, а затем выберите «Инспектор файлов».
Затем просто отмените выбор «Использовать варианты признаков», выполните очистку, нажав Shift-CMD K, а затем снова включите варианты признаков, если хотите их использовать.
источник
Я думал, что это было постоянное ограничение из-за другого ответа, однако это было из-за «выхода», который у меня все еще был для элемента, который я удалил ранее. Что делать, это:
В худшем случае вы удаляете все свои розетки и просто подключаете их снова. Дело решено!
источник
Как уже упоминалось, и руководствуясь ответом @ BadCat , я проследил за шагами и еще одним шагом, который я осмелился сделать!
Шаги для выполнения после последнего шага ответа BadCats:
Шаг 1:
Я выбрал ограничение в Интерфейсном Разработчике и затем помнил, для чего оно предназначено, а затем удалил его.
Шаг 2
Создайте проект XCode, и он покажет, что количество предупреждений может быть увеличено. Это потому, что вы удалили ограничение, которое должно быть хорошо скомпилировано. Итак, перейдите к третьему шагу!
Шаг 3
Повторно добавьте ограничение, которое вы имели в виду (то, которое вы удалили). А потом заново его построить!
Для меня предупреждения ушли, просто сделав это! Я думаю, это сработает для некоторых людей!
Причина:
Как я мог понять, проблема, вызвавшая это предупреждение, заключалась в том, что у меня был ярлык, связанный с IBOutlet, но его имя начиналось с заглавной буквы. Поэтому я переименовал его с помощью простого письма в ViewController и пришел, чтобы изменить его в IB. Я удалил прошлый IBOutlet и пошел, чтобы соединить его с недавно переименованным именем свойства и соединился. Затем я заметил, что появилось новое предупреждение.
Сначала я тоже попробовал следующий ответ в этой теме, но это не помогло!
Ура!
источник
Мой случай - выбрать метку, затем нажать control + X, она будет отключена, но я ничего с этим не делаю. Когда я соберу, он покажет предупреждение. Решение: удалить ярлык или удалить выбранный элемент управления + X для ярлыка.
источник
Я удаляю все эти элементы пользовательского интерфейса, включая их ограничения, и добавляю их все снова, эти предупреждения просто исчезают. В любом случае, это худший, но полезный способ решить эту проблему.
источник
У меня была проблема с представлением стека. Удаление ограничений и их повторное добавление не помогло. Очистка и восстановление не помогли.
Для меня решением было создать совершенно новый объект стекового вида.
Затем переместите все элементы из старого представления стека в новое представление стека.
Удаление старого представления стека устранило проблему.
источник