Предупреждающая рамка для «навигационной панели» будет другой во время выполнения появляется в Xcode 8 Swift 3

143

До того, как я обновился до, Xcode 8я не видел этой ошибки в таком случае. У меня разные навигационные контроллеры. Для всех них я вижу ошибку Frame for "Navigation bar" will be different at the run time. Navigation bar "Expected: width=384, Actual: width=375. На самом деле эти навигационные контроллеры не имеют Navigation bar. Navigation barсуществует для подпредставлений. Во всяком случае я мог бы решить эту проблему с помощью галочки и снимите галочку флажок Shows navigation barв Attributes inspector. Но, к сожалению, каждый раз, когда я снова открываю Main.storyboardэто предупреждение появляется снова. Кроме того, если я нажму на желтый треугольник, а затем на обновления кадров ничего не произойдет.

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

Дэнни
источник
1
Та же проблема здесь подтверждена. Ни одно из предложенных решений не решает проблему.
GregP
@GregP, пожалуйста, проверьте мое решение и ответьте
KSR
@ Ашиш Каккад, пожалуйста, проверьте мое решение и ответьте
KSR
Поданный rdar: // 28844288. Не стесняйтесь обманывать openradar.me/radar?id=4985464104681472
Гийом Альгис
Это мое последнее предупреждение, которое меня беспокоит после обновления моего проекта.
Sethmr

Ответы:

154

Предупреждение исчезнет, ​​если вы измените свойство «Имитированный размер» на «Свободная форма».

Кай
источник
37
Это не решает проблему. Закройте Xcode и снова откройте, проблема снова придет.
Ашиш Каккад
2
Это чертовски неприятно для меня .. Я только что попробовал это, и это временно убирает предупреждение . Вы всегда можете переключать симулированный размер вперед и назад, чтобы убрать предупреждение, когда оно вернется. Супер. Раздражает.
неконари
5
Только временное исправление - это не ответ.
emem
5
Либо измените этот имитированный размер (и обратно на «Inferred» или что-либо еще), либо «включите / выключите параметр« Отрегулировать вставки прокрутки »» . И то и другое заставит раскадровку убрать свою misplaced="YES". Это ошибка XCode, и это исправление является принудительным обновлением. Взято из ответа @buildsucceeded.
bauerMusic
1
@MobileBloke Под принудительным обновлением я подразумевал, что это заставит представление Раскадровки перезаписывать (обновлять) параметры, переоценивать и удалять предупреждение. Это действительно обновление, сила подразумевалась только потому, что он не делал это автоматически (как и должно быть) и нуждался в ручном произвольном изменении.
BauerMusic
35

Как упомянуто здесь, вы можете исправить это, включив / выключив функцию настройки вкладок Scrollview.

buildsucceeded
источник
4
Ничего себе, и (проверяя git) буквально все, что происходит, когда вы делаете это, это то, что misplaced="YES"удаляется. : /
buildsucceeded
7
Это исправит это до следующего вашего закрытия и повторного открытия проекта. Не полное исправление.
Кейси Вагнер
15

Я изменил вид с «iPhone 6S» на «iPhone 5S», затем снова переключился на «iPhone 6S», и «XCode» сделал все изменения, чтобы убрать предупреждение.

negersiu
источник
2
Это работало в течение короткого времени - затем после того, как Xcode повторил это снова - произошло то же самое, и предупреждение появилось снова. Это все еще работает для вас на последнем Xcode?
UKDataGeek
12

Это работало для меня в Xcode 8.3.1. После перезапуска Xcode все равно будет работать.

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

  1. Выберите контроллер навигации

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

  1. Перейти к показу инспектора размера

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

  1. Изменить смоделированный размер на произвольную

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

  1. Изменить смоделированный размер обратно на фиксированный

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

  1. Тогда предупреждения исчезают.

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

guoc
источник
Любая идея, почему это сработало бы, а не кнопка «Обновить кадры»?
Марганец
@guoc, брат, не могли бы вы мне помочь, пожалуйста stackoverflow.com/questions/46375778/… ?
Май Фю
7

В качестве обходного пути, просто чтобы избавиться от надоедливого предупреждения, я редактировал Main.storyboard вручную, удалив «misplaced» в:

<navigationBar key="navigationBar" opaque="NO" contentMode="scaleToFill" misplaced="YES" translucent="NO" id="Os1-Xh-7XN">

Взломать, но приятно иметь ноль предупреждений, а не 1 :)

Jensie
источник
Должен ли я добавить это позже? Меня не волнует, как выглядит мой навигационный контроллер, если у меня нет предупреждений. Это довольно забавно. Раскадровка распознает предупреждение на долю секунды, а затем исчезает, когда вы входите в раскадровку таким образом.
Sethmr
Я сделал то же самое, а потом больше не трогал раскадровку. Все работает хорошо
Чжао
Проблема в том, что когда вы перезагружаете его, он возвращается ... кто-нибудь еще замечает, что при раскадровке, когда возникает эта ошибка, загрузка раскадровки занимает много времени?
UKDataGeek
6

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

Колби
источник
1
это также просто временное исправление для меня
zero3nna
3

Пока Xcode 8 не исправлен, вы можете установить опцию «Просмотр как:» на «iPhone SE», чтобы исключить предупреждение. Не идеально, но работает на данный момент.

nekonari
источник
Я ИСПОЛЬЗУЮ SE .. но все еще Предупреждение
Абдул Вахид
1
Да, я знаю. Но они исчезают всякий раз, когда вы переключаете этот выбор на что-то другое. В настоящее время я начинаю с 7, переключаюсь на SE, затем возвращаюсь к 7, чтобы убрать эти предупреждения. Или просто оставить их, и просто не проверять misplacedсвойства при совершении изменений.
неконари
3

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

Я зарегистрировал ошибку с Apple Bug Reporter (ссылка: https://bugreport.apple.com/logon ) - если вы хотите сделать то же самое, то, пожалуйста, сослаться на ошибку: 31355220чтобы Apple могла связать ее вместе. Чем больше людей сообщат об этом - тем больше информации им придется устранить, чтобы исправить это раздражение.

UKDataGeek
источник
2

Я смог полностью избавиться от этой проблемы, установив симулированный размер контроллера представления для произвольной формы, а затем установив ширину от 375 до 320.

templeman15
источник
Вам нужно установить его только на контроллерах представления, у которых нет родителей (контроллер корневого представления + может быть больше, в зависимости от того, что у вас есть в раскадровке)
thetrutz
1

Была такая же проблема, вот что я сделал, чтобы исправить:

Разверните информацию об ошибке и нажмите на детали предупреждения. Xcode должен автоматически открыть настройки размера / положения. Замените текущее значение значением, предлагаемым в деталях предупреждения.

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

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

Вы также можете щелкнуть значок рядом с изображением, которое вы разместили (желтый треугольник с белым кружком. Иногда это значок красного кружка), тогда будут варианты для автоматического исправления / корректировки проблем.

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

Я выбрал опцию «Обновить ограничения», а затем соответствующим образом скорректировал новые ограничения.

user2027373
источник
4
Не работает в этой ситуации. Поля X / Y / Ширина / Высота для панели навигации отображаются серым цветом / недоступны для редактирования.
Слипп Д. Томпсон
@Ian Хммм ... Я думаю, что в итоге я отредактировал xib так, чтобы числа совпали.
Слипп Д. Томпсон
1

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

Я должен был выбрать «нет» в «нижней панели» вариант:

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

Раду Урсаче
источник
0

Хорошо, похоже, я исправил проблему. Вот что я сделал.

Выберите обновления кадров, как обычно. Откройте другой файл и затем снова нажмите на файл раскадровки. Если это не сработает, перезапустите Xcode. Похоже, что он обновлялся внутри, но интерфейс строителя интерфейса застрял, как это иногда бывает.

GregP
источник
3
После повторного открытия XCode это предупреждение фактически исчезает, но если я открою какой-либо файл в проекте и снова откроются, main.storyboardэти предупреждения снова появятся
Дэнни
0

Пожалуйста, измените предварительный просмотр вашего устройства в xcode для контроллера View и скомпилируйте и проверьте предупреждения ...

Xcode 8 немного глючит, конструктор интерфейса сбрасывает его со случайным значением no, которое влияет на все содержащиеся представления. Попробуйте изменить устройство предварительного просмотра.

Акс
источник