Oto przed i po jednym z moich ekranów po uaktualnieniu do Xcode 8.
Wszystko, co zrobiłem, to otworzyłem main.storyboard i stamtąd zbudowałem i uruchomiłem moją aplikację na moim telefonie.
W mojej kontroli wersji widzę, że Xcode wprowadza wiele zmian w mojej tablicy main.storyboard tylko ode mnie jej otwarcia.
Za każdym razem, gdy usuwam te zmiany, widzę, czego używam, aby zobaczyć w Xcode 7.3.1.
Ale gdy tylko ponownie otworzę narzędzie do tworzenia interfejsów z moją scenorysem, widzę, że te zmiany wracają na swoje miejsce.
Czy jest coś, co mogę tutaj zrobić?
102
Debug View Hierarchy
. Nie dotyczy to innych obiektów tej samej klasy, które znajdują się w UICollectionViews.Odpowiedzi:
Miałem podobny problem z obrazami tabeli, które nie pojawiały się po przekonwertowaniu pliku storyboardu na kompatybilny z Xcode8. Wygląda to na błąd w Xcode8, więc dopóki nie zostanie wydana poprawka błędu, oto obejście:
Jeśli chcesz wprowadzić inne zmiany w pliku serii ujęć, wykonaj ponownie poniższe kroki.
źródło
XIB lub Storyboard ustawiają domyślnie jako starszą wersję 7.xi Zapisz i zamknij. Rozwiązanie tymczasowe, ale działa. Nie otwieraj ponownie po zakończeniu zapisywania i zamykania. W przeciwnym razie ponownie należy wykonać te same kroki od początku.
źródło
Ech ten sam problem. Częściowo udało mi się to naprawić w następujący sposób ( dla Xcode w wersji 8.1 (8B62) )
W zarysie dokumentu Storyboard kliknąłem każdą scenę, która miała żółtą strzałkę wskazującą na pewne problemy z układem (numer 1 na zrzucie ekranu)
Po tym, dla każdej problematycznej sceny, musiałem kliknąć małą ikonę "Aktualizuj klatki" (numer 2 na zrzucie ekranu), co naprawiało wszystkie problemy z układem każdej sceny.
Jednak jedna scena w moim przypadku nadal była w stanie płaczu po przejściu z Xcode7 do Xcode8. Musiałem to naprawić ręcznie, dostosowując ograniczenia lub dodając brakujące wiązania.
Uff, niezła niespodzianka z XCode8 i Storyboards. Jeśli korzystałeś z edytora AppCode, nie będziesz miał takiego problemu, ponieważ nie obsługuje on Storyboardów; P
Powodzenia!
źródło
Xcode 8.1 Beta 2 rozwiązuje ten problem. Sprawdź ten link do pobrania
https://developer.apple.com/download/
źródło
Proszę śledzić wątki, aby znaleźć możliwe rozwiązanie: (wierzę, że zdarza się to wielu programistom).
Xcode 8 GM seed Problem ze scenorysem
Xcode 8 - Poprzednie storyboardy
ulegają zniekształceniu (użyłem dowolnej szerokości 600) Po zaktualizowaniu Xcode do Xcode 8 zmieniło się wszystkie moje ViewControllers. W rezultacie cały układ został zniekształcony.
Obecnie widzę tylko 3 rozwiązania tego problemu (nie ufałbym czekaniu na naprawę wkrótce).
1. Przejdź do każdego Viewcontroller i napraw go przez
Update Frames
.2.Przejdź do głównego ViewController,
Size Inspector -> Freeform -> 600
ponieważ większość kontrolerów sądzi, że zmieni on rozmiar dla nich wszystkich (uważaj na wpływ nowych funkcji Apple, które chcę wprowadzić).3. Odrzuć zmiany w git dla storyboardu (nie sugerowałbym tego, ponieważ Apple również wstawił kilka aktualizacji, które mogą być ważne dla Xcode).
Dodatkowe łącze do nowych funkcji AutoLayout w Xcode 8 (WWDC16): Adaptacja aplikacji, część 1
źródło
W moim przypadku sprawdzają się rozwiązania zaproponowane przez Akhila Kateję i muszę też zresetować Szerokość i Wysokość głównego widoku:
1) Ustaw Rozmiar widoku na Dowolna forma
2) Zresetuj szerokość i wysokość widoku do oryginalnego rozmiaru:
Na koniec zapisz i gotowe.
źródło
Dla mnie rozwiązaniem było po prostu kliknięcie kontrolera UIViewController, który ma problemy, a następnie
Editor > Resolve Auto Layout Issues > All Views In ... > Updates Frames
Zmieniono układ widoków, aby dopasować istniejące ograniczenia w oparciu o nowo wybrany widok domyślny (w moim przypadku iPhone 7).
Zwróć również uwagę: jeśli pojawi się ostrzeżenie o niewłaściwym umieszczeniu paska nawigacji, tak jak ja, po prostu wybierz UINavigationController / UIViewController, a następnie
Attributes Inspector > Bar Visibility > Shows Navigation Bar
- wyłącz je i włącz ponownie.źródło
Ustawianie Zobacz Rozmiar do Freeform z wywnioskować pracował dla mnie. Można go znaleźć pod nagłówkiem Symulowane metryki w Inspektorze atrybutów .
źródło
Miałem ten sam problem i rozwiązałem go, wymuszając aktualizację ograniczeń widoku kontrolera. Umieść następujący kod w swojej funkcji viewDidLoad ()
źródło
Wybrałem każdy kontroler i kliknąłem „Aktualizuj ramki” i naprawiłem układ.
źródło
Odpowiedź z @ david-truong ( https://stackoverflow.com/a/39589860/1407528 ) nie działa w moim przypadku, więc jeśli jesteś w takiej samej sytuacji, spróbuj tego:
Jeśli masz wszystkie swoje urządzenia zaktualizowane do iOS 10+, ta wersja Xcode nie rozpozna tych urządzeń jako kompatybilnych urządzeń. Więc spróbuj z tą sztuczką:
Uwaga: nowe funkcje, takie jak Swift, nie będą dostępne przy użyciu tej sztuczki, ale powinieneś być w stanie załadować i zbudować swój projekt.
źródło
Mam nadzieję, że to pomoże
Kiedy zaktualizowałem Xcode z wersji 7.3 do Xcode 8 i uruchomiłem aplikację, niektóre widoki są doskonale wyświetlane, ale niektóre są zniekształcone. Następnie sprawdziłem plik nib i poprosił mnie o wybranie określonego rozmiaru urządzenia, a następnie wyświetlenie stalówki zgodnie z tym rozmiar urządzenia, który nie jest obcy
Any-Any(Xcode 7.3)
. Więc wszystkie pliki nibs nie wyświetlają się poprawnie.Rozwiązanie działa ode mnie: - naciśnij żółtą strzałkę jak na obrazku poniżej
wyświetli się wyskakujące okienko z opcjami takimi jak
wybierz
Update Frames
zApply to all views in container
zaznaczonym. to rozwiąże około 90% zniekształconego interfejsu użytkownika, a resztę problemu z ograniczeniami automatycznego układu można rozwiązać ręcznie.źródło
Rozwiązałem problem przy użyciu Xcode w wersji 7.3.1, którą można pobrać plik .dmg z portalu dla programistów Apple. Użyłem Autoryzacji w każdej aplikacji i działa świetnie. Zaktualizuję do Xcode 8 tylko wtedy, gdy mogą naprawić ten błąd.
Pobierz go tutaj: https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_7.3.1/Xcode_7.3.1.dmg
źródło
Aby rozwiązać podobny problem, skonfigurowałem xib jako Freeform (nie wywnioskował) ORAZ zapisałem plik xib jako zgodny z Xcode 7.x. W moim przypadku wymagane były oba kroki. Mam nadzieję że to pomogło!
źródło
Zauważyłem nowy przycisk w Xcode 8.2 (sprawdź pomarańczowe kółko na obrazku). To da ci pomoc.
Kroki: 1. Otwórz scenorys i wybierz dowolne urządzenie 2. Po prostu wybierz kontroler widoku 3. Kliknij wspomniany przycisk (jak na obrazku) 4. Zaktualizuje ramkę dla tego kontrolera widoku i możesz kontynuować
Nie znalazłem lepszego rozwiązania niż to. Odpowiedz, jeśli znalazłeś.
źródło
Aktualizuj ograniczenia i podglądy układu w viewdidload rozwiązuje problem
źródło