iOS 7: неуместная рамка просмотра для метки — метка будет отличаться во время выполнения

Я только что закончил приложение для iOS 6 и неделю назад купил учетную запись разработчика, поэтому у меня не было много времени, чтобы поиграть с iOS 7 SDK. Только что скачал версию Golden Master и пытаюсь обновить приложение, чтобы оно было совместимо с iOS 7.

Я получил много предупреждений о том, что

Неуместная рамка просмотра для «Ярлык — Метка» будет отличаться во время выполнения.

и я не могу запустить программу. Проект содержит tableview и анализирует и отображает XML-канал из RSS.

Как решить эту проблему?


person AJ112    schedule 12.09.2013    source источник
comment
Xcode 5 и iOS 7 все еще находятся под соглашением о неразглашении, из-за этого вы можете не получить ответа на свой вопрос.   -  person rckoenes    schedule 12.09.2013
comment
@rckoenes Спасибо. Должен ли я задать этот вопрос на форуме разработчиков Apple?   -  person AJ112    schedule 12.09.2013
comment
это было бы правильное место.   -  person rckoenes    schedule 12.09.2013
comment
Вы используете автомакет с ограничениями?   -  person Tarek Hallak    schedule 12.09.2013
comment
@null да, я использую Autolayout. Не уверен, что вы подразумеваете под ограничениями. Раньше были ошибки автомакета, но я изменил цель развертывания с iOS 5 на iOS 6, и эти ошибки исчезли. Но эти предупреждения все еще там. Я хочу, чтобы он работал как на iOS 6, так и на iOS 7.   -  person AJ112    schedule 12.09.2013


Ответы (5)


У меня была такая же проблема, и я получаю ответ от Apple ниже:

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

Я сделал следующее:

Редактор -> Устранение проблем с автоматическим макетом -> Очистить все ограничения в ** контроллере представления

затем я снова переупорядочил свои объекты в представлении.

PS: сначала попробуйте решение Энрико.

person Tarek Hallak    schedule 12.09.2013
comment
Спасибо, это сработало для меня. Хотя мне нужно выбрать настраиваемую ячейку таблицы, а затем использовать параметр «Очистить все ограничения». - person AJ112; 12.09.2013
comment
Это снимет ваши ограничения! См. ответ Энрико. - person Apfelsaft; 25.08.2014
comment
Итак, если я добавил autoLayout в некоторые представления и случайно изменил фрейм или неправильно установил только одно представление, вы говорите, что мне нужно очистить ограничения и оставить представления на статических позициях? А как насчет других ограничений представлений, установленных с самого начала? См. ответ @Enrico. - person E-Riddie; 15.10.2014
comment
@eridb какая статическая позиция ??!!! да! кто это сказал?? Я только что снова переупорядочил свои ограничения. - person Tarek Hallak; 15.10.2014
comment
Это не лучший способ. Предположим, у вас есть относительные ограничения для этого представления, которое вы удаляете. Вы просто получаете множество предупреждений об отсутствующих ограничениях для других представлений. Если вы очистите их все, на сложных представлениях вам придется изучить, как вы изменили порядок своих первоначальных представлений. Почему Xcode добавил функцию ограничения макета resolve? - person E-Riddie; 15.10.2014
comment
Согласитесь, но в некоторых случаях «разрешить макет» портит представление, в любом случае вы можете попробовать оба способа, удачного кодирования;) - person Tarek Hallak; 16.10.2014
comment
Да, я знаю это, но я хотел сказать вам, чтобы вы обновили ответ и рассказали о других возможностях, чтобы не получить ложные отрицательные голоса. Я не минусую вас, потому что вы знаете, как это делается, просто я прошу сделать этот вопрос более ценным. P.S. Судя по твоему имени, я не уверен, что ты получил сообщение, у тебя нет адреса :P - person E-Riddie; 16.10.2014
comment
Извините, а как это ответ? Проблема редко заключается в том, что ограничения неверны, а скорее в том, что позиция в IB не отражает их правильно. - person entonio; 05.11.2014

Принятый ответ решит проблему, но это не очень хорошее решение, поскольку оно снимет все ваши ограничения. Если вы потратили часы на ограничения, не делайте этого.

Если вы нажмете треугольник рядом с предупреждением, вы можете получить объяснение того, что неуместно. Затем вы можете просто переместить рамку туда, где она должна быть. Например:

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

В этом случае я просто переместил позицию y своего текстового представления на 94, и предупреждение исчезнет. Это связано с тем, что одно из моих ограничений заставит представление находиться где-то еще, когда приложение работает, но положение отличается от того, где оно сейчас находится в раскадровке.


Другой способ переместить фрейм в нужное положение — щелкнуть предупреждение рядом с именем контроллера представления в раскадровке, а затем щелкнуть желтый предупреждающий знак и нажать «Обновить фрейм».

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

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

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

person Enrico Susatyo    schedule 18.01.2014
comment
Что, если я хочу использовать размер холста, а не то, что будет во время выполнения? Что я буду делать? - person Gellie Ann; 10.07.2015
comment
@GelFermis В общем, вам придется переработать свои ограничения, но попробуйте сначала нажать «Обновить ограничения», и он попытается сделать это за вас. - person Enrico Susatyo; 10.07.2015
comment
@EnricoSusatyo Я попытался нажать «Обновить ограничения», а затем «Исправить неправильное размещение», но предупреждение все еще там. Означает ли это, что мне придется переделывать свои ограничения? - person Gellie Ann; 27.11.2015
comment
это происходит со мной так же, как с гелем Фермисом. Мне нужно обновлять кадры каждый раз, когда я открываю раскадровку. есть ли решение? Это правильное решение, но не решает мою проблему, так как мне нужно обновлять кадры каждый раз, когда я загружаю раскадровку. Любое решение? Спасибо - person Frade; 02.02.2016

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

Пожалуйста, смотрите значение: -

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

Вы можете выбрать «Обновить кадры» или «Обновить ограничения» и использовать «Восстановить рекомендуемые ограничения». Это решит проблему, связанную с неуместным просмотром. Не перетаскивайте виды, чтобы изменить макет. Вместо этого отредактируйте применимые ограничения. Пожалуйста, дайте мне знать, если вы не ясно.

person Sanoj    schedule 26.12.2013

Если у вас возникли проблемы с поиском Update Frames в xCode, это можно сделать следующим образом:

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

person sivi    schedule 22.08.2015

Ни один из ответов не работает во всех случаях. Начиная с последней версии Xcode, используя UISearchBar, включение поля области видимости, включенного в IB, делает поле поиска двойной высоты (но не отображает полосу области видимости под ним). Независимо от того, добавите ли вы ограничение высоты (любой высоты) в поле поиска, вы получите предупреждение о том, что это неуместное представление, которое будет иметь размер 88 H во время выполнения, но 44 H в IB. Обновление фреймов (любых или всех фреймов) не решает проблему. Похоже на ошибку в ИБ.

person clearlight    schedule 29.01.2015
comment
примечание: помимо раздражающего предупреждения IB, код работает нормально и делает правильные вещи (включая отображение полосы обзора) - person clearlight; 29.01.2015
comment
Да, я продолжаю обновлять кадр, и он просто перемещается на один пиксель вверх. Предупреждения все еще там. Обновите кадр еще раз, он сместится на 1 пиксель вниз. Это просто продолжается вечно... Когда код работает, все в порядке. - person KorinW; 02.03.2016