Ramka ostrzegawcza dla „paska nawigacji” będzie inna, gdy w czasie wykonywania pojawi się w Xcode 8 Swift 3

143

Przed aktualizacją do Xcode 8nie widziałem tego błędu w takim przypadku. Mam różne kontrolery nawigacji. Dla wszystkich widzę błąd Frame for "Navigation bar" will be different at the run time. Navigation bar "Expected: width=384, Actual: width=375. W rzeczywistości te kontrolery nawigacji nie mają Navigation bar. Navigation baristnieje dla podglądów podrzędnych. W każdym razie mogę go rozwiązać przez kleszcza i odznacz pole wyboru Shows navigation barw Attributes inspector. Ale niestety za każdym razem, gdy otwieram Main.storyboardto ostrzeżenie, pojawia się ponownie. Również jeśli kliknę żółty trójkąt, a następnie ramki aktualizacji, nic się nie dzieje.

wprowadź opis obrazu tutaj

Danny
źródło
1
Potwierdzono ten sam problem. Żadne z sugerowanych rozwiązań nie rozwiązuje problemu.
GregP
@GregP, sprawdź moje rozwiązanie i odpowiedz
KSR
@Ashish Kakkad, sprawdź moje rozwiązanie i odpowiedz
KSR
Zgłoszony rdar: // 28844288. Zapraszam do kopiowania openradar.me/radar?id=4985464104681472
Guillaume Algis
To jest moje ostatnie ostrzeżenie, które niepokoi mnie po aktualizacji projektu.
Sethmr

Odpowiedzi:

154

Ostrzeżenie zniknie, jeśli zmienisz właściwość „Symulowany rozmiar” na „Dowolny”.

Kai
źródło
37
To nie rozwiązuje problemu. Zamknij Xcode i otwórz ponownie, problem powróci.
Ashish Kakkad
2
To mnie drażni… Właśnie spróbowałem, a to tymczasowo usuwa ostrzeżenie . Zawsze możesz przełączać Symulowany rozmiar w tę i z powrotem, aby usunąć ostrzeżenie, gdy się pojawi. Wspaniały. Denerwujący.
nekonari
5
Tylko tymczasowe rozwiązanie - to nie jest odpowiedź.
emem
5
Zmień ten symulowany rozmiar (i z powrotem na „Wywnioskowany” lub cokolwiek innego) albo „włącz / wyłącz dostosowywanie wstawek widoku przewijania” . Oba spowodują, że Storyboard usunie plik misplaced="YES". To jest błąd Xcode, a ta poprawka ma charakter wymuszonego odświeżania. Zaczerpnięte z odpowiedzi @buildsucceeded.
bauerMusic
1
@MobileBloke Przez force-refresh miałem na myśli, że spowoduje to przepisanie (odświeżenie) parametrów przez widok Storyboard, ponowne oszacowanie i usunięcie ostrzeżenia. To naprawdę odświeżenie, siła oznaczała tylko, że nie zrobiła tego automatycznie (tak jak powinna) i wymagała ręcznej, arbitralnej zmiany.
bauerMusic
35

Jak wspomniano tutaj, możesz to naprawić, włączając / wyłączając opcję Dostosuj wstawki widoku przewijania.

kompilacja powiodła się
źródło
4
Wow, i (sprawdzając git) dosłownie wszystko, co się dzieje, kiedy to robisz, misplaced="YES"jest usuwane. : /
kompilacja zakończyła się
7
To rozwiązuje problem do następnego zamknięcia i ponownego otwarcia projektu. Nie jest to całkowita poprawka.
Casey Wagner
15

Zmieniłem z widoku jako: iPhone 6S na iPhone 5S, a następnie z powrotem zmieniłem na iPhone 6S, a Xcode wykonał wszystkie zmiany, aby usunąć ostrzeżenie.

negersiu
źródło
2
To działało przez krótki czas - a potem po ponownym przetworzeniu przez Xcode - stało się to samo i ostrzeżenie pojawiło się ponownie. Czy to nadal działa dla Ciebie w najnowszym Xcode?
UKDataGeek
12

To zadziałało dla mnie w Xcode 8.3.1 Po ponownym uruchomieniu Xcode nadal działało.

wprowadź opis obrazu tutaj

  1. Wybierz Kontroler nawigacji

wprowadź opis obrazu tutaj

  1. Przejdź do Pokaż inspektora rozmiaru

wprowadź opis obrazu tutaj

  1. Zmień rozmiar symulowany na dowolny

wprowadź opis obrazu tutaj

  1. Zmień symulowany rozmiar z powrotem na stały

wprowadź opis obrazu tutaj

  1. Wtedy ostrzeżenia znikają.

wprowadź opis obrazu tutaj

guoc
źródło
Masz jakiś pomysł, dlaczego to zadziałałoby, a nie przycisk „Aktualizuj klatki”?
Mangan
@guoc, stary, czy możesz mi pomóc, proszę, stackoverflow.com/questions/46375778/… ?
May Phyu
7

Aby obejść ten problem, tylko po to, by pozbyć się irytującego ostrzeżenia, które ręcznie edytuję Main.storyboard, usuwając słowo „niewłaściwe” w:

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

Hack, ale miło jest mieć zero ostrzeżeń zamiast 1 :)

Jensie
źródło
Czy będę musiał to dodać później? Nie obchodzi mnie, jak wygląda mój kontroler nawigacji, o ile nie mam ostrzeżeń. To trochę zabawne. Storyboard rozpoznaje ostrzeżenie na ułamek sekundy, a następnie znika, gdy wejdziesz do serii ujęć w ten sposób.
Sethmr
Zrobiłem to samo, a potem nie dotykaj więcej scenorysu. Wszystko działa dobrze.
Zhao,
Problem polega na tym, że po ponownym załadowaniu wraca ... ktoś inny zauważa, że ​​ładowanie storyboardu z uruchomionym spinnerem zajmuje dużo czasu, gdy wystąpi ten błąd?
UKDataGeek
6

Kliknij „Wyświetl jako” w lewym dolnym rogu scenorysu i wybierz inny rozmiar urządzenia, a następnie kliknij ponownie i wróć do rozmiaru urządzenia, od którego zacząłeś. To zadziałało dla mnie.

Colby
źródło
1
to też tylko tymczasowo to naprawia dla mnie
zero3nna
3

Dopóki Xcode 8 nie zostanie zaktualizowany, możesz ustawić opcję „Wyświetl jako:” na „iPhone SE”, aby wyeliminować ostrzeżenie. Nie jest to idealne rozwiązanie, ale na razie działa.

nekonari
źródło
UŻYWAM SE ... ale nadal Ostrzeżenie
Abdul Waheed
1
Tak, wiem. Ale znikają, gdy przełączysz ten wybór na coś innego. Obecnie zaczynam od 7, przełączam się na SE, a następnie wracam do 7, aby usunąć te ostrzeżenia. Lub po prostu je zostaw i po prostu nie sprawdzaj misplacedwłaściwości podczas zatwierdzania zmian.
nekonari,
3

Wypróbowałem wszystkie powyższe sugestie, ale wydawało się, że nie działają. Myślę, że to może być poważniejszy błąd.

Zarejestrowałem błąd w Apple Bug Reporter (link: https://bugreport.apple.com/logon ) - jeśli chcesz zrobić to samo, odnieś się do błędu: 31355220tak, aby Apple mógł go powiązać. Im więcej osób to zgłosi - tym więcej informacji będą musiały naprawić tę irytację.

UKDataGeek
źródło
2

Byłem w stanie całkowicie pozbyć się tego problemu, ustawiając symulowany rozmiar kontrolera widoku na dowolny, a następnie ustawiając szerokość z 375 na 320.

templeman15
źródło
Musisz tylko ustawić to tylko na kontrolerach widoku, które nie mają rodziców (główny kontroler widoku + może więcej, w zależności od tego, co masz w swojej scenorysie)
thetrutz
1

Miałem ten sam problem, oto, co zrobiłem, aby naprawić:

Rozwiń informacje o błędzie i kliknij szczegóły ostrzeżenia. Xcode powinien wtedy automatycznie otworzyć ustawienia wymiaru / pozycji. Zastąp bieżącą wartość wartością sugerowaną w szczegółach ostrzeżenia.

wprowadź opis obrazu tutaj

Zasadniczo upewnij się, że rozmiar w środowisku wykonawczym jest taki sam, jak rozmiar określony w inspektorze rozmiaru.

Możesz także kliknąć ikonę obok opublikowanego obrazu (żółty trójkąt z białym kółkiem. Czasami jest to ikona czerwonego kółka), a wtedy pojawią się opcje automatycznego naprawiania / korygowania problemów.

wprowadź opis obrazu tutaj

Wybrałem opcję aktualizacji ograniczeń, a następnie odpowiednio dostosowałem nowe ograniczenia.

user2027373
źródło
4
Nie działa w tej sytuacji. Wszystkie pola X / Y / Szerokość / Wysokość na pasku nawigacji są wyszarzone / nie można ich edytować.
Slipp D. Thompson
@Ian Hmmm… Myślę, że skończyło się na edytowaniu xib, aby liczby się zgadzały.
Slipp D. Thompson,
1

dla mnie problem polegał na tym, że ukrywałem dolny pasek po naciśnięciu (używając pola wyboru IB).

musiałem wybrać opcję „brak” w opcji „dolny pasek”:

wprowadź opis obrazu tutaj

Radu Ursache
źródło
0

OK, więc wygląda na to, że rozwiązałem problem. Oto co zrobiłem.

Wybierz ramki aktualizacji jak zwykle. Otwórz inny plik, a następnie kliknij ponownie plik serii ujęć. Jeśli to nie zadziała, uruchom ponownie Xcode. Wygląda na to, że aktualizował się wewnętrznie, ale interfejs konstruktora interfejsu utknął, jak to się czasami zdarza.

GregP
źródło
3
Po ponownym otwarciu XCode to ostrzeżenie faktycznie znika, ale jeśli otworzę jakikolwiek plik w projekcie i ponownie otworzę, main.storyboardte ostrzeżenia pojawią się ponownie
Danny
0

Zmień swoje urządzenie Podgląd w xcode dla kontrolera Wyświetl i skompiluj i sprawdź ostrzeżenia ...

Xcode 8 jest nieco błędny, konstruktor interfejsu resetuje go z losowym nie, co wpływa na wszystkie zawarte widoki. Spróbuj zmienić urządzenie podglądu.

Aks
źródło