Короткий ответ: Проверьте исходный код вашей раскадровки для каждого из идентификаторов в ваших предупреждениях, выполнив поиск «id =» theIdFromWarning «. Идентификаторы указаны для ограничений . Когда вы найдете идентификатор ограничения, он будет ссылаться на идентификаторы двух элементов.Найдите элементы, выполнив поиск «id =» theIdForElement «Тогда вы найдете имя или часть информации в этом исходном коде элемента, чтобы узнать, на какой элемент вы смотрите. Затем переключите раскадровку обратно из исходного кода в конструктор интерфейса, найдите два элемента и посмотрите, какой размерный класс связан с соответствующим ограничением, но элемент отсутствует. Пример: ViewA.right может быть ограничен горизонтально ViewB.left, установленным во всех классах размеров, но ViewA может быть установлен только в height = Regular size class. Решение: установите ViewA на все классы размеров или удалите ограничение для всех классов размеров и добавьте ограничение только к классу height = Regular size.
Более длинный ответ, шаг за шагом:
Я не был в состоянии легко увидеть, какие ограничения/элементы эти предупреждения имели в виду. Для меня я смог щелкнуть правой кнопкой мыши предупреждение и выбрать «Показать в журнале». Это показало 10 предупреждений в этом формате стиля:
/my/filepath/to/storyboard:1xe-xx-Bx5: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
Если журнал не отображается подробное описание, как это, затем щелкните правой кнопкой мыши на какой-либо ссылки на журнал Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
предупреждения и выберите Expand all transcripts
, а затем искать Ваш журнал файл для описания ограничений.
Итак, я открыл раскадровку, щелкнул правой кнопкой мыши файл раскадровки в навигаторе проекта и выбрал «просмотр как исходный код» для поиска каждого ограничения указанным идентификатором (в приведенном выше примере я искал идентификатор: 1xe -xx-BX5), и нашел одну ссылку на него:
<constraint firstItem="Mwb-6O-DKs" firstAttribute="top" secondItem="y2M-Sk-Ygh" secondAttribute="bottom" constant="19" id="1ce-xx-Bx5"/>
Что это говорит мне:
- это ограничение имеет идентификатор 1ce-х х-BX5
- Ограничение связано с двумя элементами:
- Один имеет идентификатор MWB-6-O-ДК
- Другой имеет идентификатор y2M-Sk-Ygh
Так что я искал исходный код для первого элемента по идентификатору, путем поиска id="Mwb-6O-DKs"
и нашел это:
<label ...(truncating for readability sake)...text="Build Label"...(truncating for readability sake)...id="Mwb-6O-DKs">
Это говорит мне, что первым элементом является UILabel
с заголовком «Построить ярлык».
Поиск второго элемента по идентификатору, id="y2M-Sk-Ygh"
, показал:
<viewController storyboardIdentifier="login"...(truncating for readability sake)...<layoutGuides><viewControllerLayoutGuide type="top" id="y2M-Sk-Ygh"/>
Итак, я беру это означает, что UILabel
с текстом «Build Ярлыка» имеет верхнее ограничение, выключен. (Так как viewControllerLayoutGuide
ограничение никогда не должен быть выключен, он должен быть UILabel
.
И вот, она не была установлена. Я выбрал Installed
флажок для UILabel и исчезла ошибка.
1 down, 9 больше to go! (F * ing Xcode ...)
любые обновления по этому вопросу? –
@MuruganandhamK к сожалению нет – Danny
@MuruganandhamK проверить, нет ли у вас каких-либо просмотров 'Installed' – AamirR