Mam aplikację obsługującą system iOS8 i nowsze, wbudowaną w Xcode 7 i używam XIB do ekranu uruchamiania (nie mam obrazów uruchamiania). Widok zawiera pojedynczy UILabel z wersją aplikacji oraz 2 UIImageViews z obrazami, które oba są obecne w Images.xcassets: Logo i obraz powitalny.
UILabel i obraz logo są wyświetlane poprawnie po uruchomieniu aplikacji, ale obraz powitalny nie pojawia się, jeśli uruchomię aplikację na iPadzie Air 2 z iOS9. Testowałem na symulatorze Air i Mini z systemem iOS8 i iOS9 dla iPada 2, iPada Air i iPada Air 2, a obraz jest poprawnie wyświetlany we wszystkich tych urządzeniach.
Przeprowadziłem podstawowe rozwiązywanie problemów, aby dowiedzieć się, co się dzieje, ale nie byłem w stanie tego rozwiązać, a jedyną różnicą, którą widzę między obrazem, który działa, a tym, który zawodzi, jest to, że dodałem go do majątek...
Oto podsumowanie tego, co wiem:
UIImageView dla obrazu powitalnego znajduje się we właściwym miejscu, we właściwym rozmiarze. Mogę to powiedzieć, ponieważ dla pewności ustawiłem kolor tła na zielony. Widok jest tam, ale obraz się nie pojawia. Zakładam więc, że nie można winić tego widoku.
Ustawienie UIImageView dla obrazu powitalnego tak, aby używał również obrazu logo, powoduje, że obraz logo pojawia się we właściwym miejscu dla widoku. To prowadzi mnie również do założenia, że nie można winić tego widoku.
UIImage, którego używam w widoku powitalnym, jest używany gdzie indziej w aplikacji i pojawia się dobrze w tych innych widokach (obraz logo jest również używany w innym miejscu w aplikacji i wygląda dobrze). Zakładam więc, że obraz jest prawidłowy, a wyświetlenie go w innych widokach nie stanowi problemu.
Potwierdziłem, że ustawienia UIImages dla logo i splash w pliku xcassets są takie same. Są ustawione na Uniwersalny, Dowolna szerokość i wysokość, wiele współczynników skali, renderowanych jako domyślne. Jest jedna różnica - logo ma skale 1x, 2x i 3x, podczas gdy obraz powitalny ma tylko 1x i 2x, ale próbowałem również użyć UIImagów tylko z wartościami 1x, 1x i 2x w UIView i działają (jeśli były dodane do projektu jakiś czas temu).
Dodanie innego obrazu o innym rozmiarze lub formacie (PNG i JPG) do moich zestawów xcasset i użycie tego UIImage w UIImageView dla obrazu powitalnego również nie wyświetla się.
Dodanie kolejnego UIImageView do pliku XIB i przydzielenie mu UIImage, który był już w xcasset działa, obraz pojawi się na ekranie ładowania.
Kopiowanie i zmiana nazw plików graficznych używanych do logo oraz dodawanie ich do projektu, a następnie używanie tego UIImage w widoku powitalnym również nie jest wyświetlane.
Próbowałem wyczyścić projekt, ponownie uruchomić maszynę programistyczną, usunąć aplikację z Air 2 i ponownie zainstalować ją na wypadek, gdyby był problem.
Te trzy ostatnie kroki doprowadziły mnie do wniosku, że istnieje pewien problem z obrazami dodanymi po pewnym momencie życia pliku projektu. Podczas gdy wczoraj zaktualizowałem Xcode 7, obraz powitalny został pierwotnie dodany w Xcode 6, ale obraz logo (również dodany w Xcode 6) został dodany kilka miesięcy wcześniej.
Przejrzałem pliki json pod kątem obrazu logo i obrazu powitalnego i wydają się mieć ten sam format. Przeszukałem również plik pbxproj w poszukiwaniu różnic i nie widzę żadnych.
Zastanawiałem się więc, czy ktoś nie miał pojęcia, dlaczego ekran uruchamiania może nie wyświetlać tych nowych obrazów, które konkretnie dodaję na Air 2? Inne pytania, które czytałem, odnoszące się do obrazów, które nie pojawiają się wszystkie, wydają się dotyczyć albo obrazów uruchamiania, albo obrazów w plikach XIB, które mają powiązane klasy, z których żadne nie wydaje się tutaj istotne.
Odpowiedzi:
Wyłącz, a następnie włącz ponownie.
Poważnie, uruchom ponownie urządzenie - to właśnie dla mnie to naprawiło.
Oto, co nie działało:
Starsze obserwacje:
Podobnie jak inne, to:
Pamiętam, że uruchomienie pierwszej wersji, w której przestał działać, to odłączenie iPhone'a podczas jego uruchamiania. (Nie jestem pewien, czy jest to powiązane).
Jednak reset git nie naprawiający go (w połączeniu ze wszystkimi niedziałającymi czystymi krokami) mówi mi, że to musi być zbuforowane gdzie indziej. Całkiem możliwe, że w jednym z plików .gitignored? (Używam pliku ignorowania Git dla projektów Xcode )
Jednym obejściem, które działało dla jednego UIImageView (w UIView, który ma trzy), ale nie dla innych, było umieszczenie obrazu w pliku .xcassets. Przywrócenie zwykłego pliku obrazu nie cofnęło poprawki. (Naprawdę czuję się jak błąd buforowania).
AKTUALIZACJA: Patrz u góry - ponowne uruchomienie urządzenia naprawiło to. Mam wrażenie, że niewłaściwe dane bitmapowe są buforowane na samym urządzeniu.
Radar: http://openradar.appspot.com/23534818
źródło
„Rozwiązaniem dla mnie było po prostu upewnienie się, że pole„ Czyści kontekst graficzny ”nie jest zaznaczone dla UIImageView w serii ujęć. Po prostu to zmieniłem, naprawiłem to.” Żadne inne rozwiązania nie działały dla mnie. Dostałem to z forum programistów Apple
źródło
Miałem dokładnie ten sam problem na iPhonie 6.
Bardzo dziwny jest fakt, że mogłem użyć innego obrazu z moich obrazów. Xcassets, które miały ten sam rozmiar, kompresję, przestrzeń kolorów ...
Nie jestem w stanie dowiedzieć się, dlaczego to nie działa, ale znalazłem rozwiązanie: po prostu umieść plik poza plikami images.xcassets i użyj jego pełnej nazwy (z rozszerzeniem) w Konstruktorze interfejsów
Mam nadzieję, że to pomoże !
źródło
Poniższa sekwencja operacji naprawiła dla mnie problem na Xcode 7.3.1 i iOS 9.3.4:
źródło
Wiele innych odpowiedzi sugeruje ponowne uruchomienie urządzeń i / lub przebudowanie i / lub ponowna instalacja jest rozwiązaniem.
Chociaż te odpowiedzi działają w przypadku niektórych z nas, przyczyną jest to, że aplikacja jest zmuszona do „wznowienia” lub „odbudowania” migawek w pamięci podręcznej.
Migawki w pamięci podręcznej są używane przez aplikacje do prezentacji obrazów przed załadowaniem danych obsługujących do pamięci, w tym katalogu zasobów zawierającego obrazy scenariuszy.
Ta SO odpowiedź @jaga stanowi rozwiązanie, ale nie powód, dla którego brakuje UIImageViews na ekranie uruchamiania na urządzeniu (ale nie w symulatorze).
tło
Ostatnio próbowałem użyć niestandardowej czcionki w moim pliku „Launch Screen.storyboard”.
Powód, dla którego nie mogłem się wyjaśnić po przeczytaniu tej odpowiedzi SO przez @TimCamber, która skłoniła mnie do przeprowadzenia dalszych badań i testów.
Powodem, dla którego niestandardowa czcionka nie jest uwzględniona w moim pliku Storyboard ekranu uruchamiania, jest ten sam powód, dla którego obraz w katalogu zasobów nie został uwzględniony ...
Aplikacja przygotowuje migawki pionowe i krajobrazowe ekranu uruchamiania aplikacji z pliku scenariusza ekranu uruchamiania i (obecnie) zapisuje go w pakiecie aplikacji tutaj:
/Library/Caches/Snapshots/<<app_bundle>>/
i/Library/Caches/Snapshots/<<app_bundle>>/downscaled/
.Ten proces jest zakończony przed załadowaniem jakichkolwiek plików pomocniczych, w tym niestandardowych czcionek i katalogu zasobów.
Rozwiązanie
Jak wspomniano powyżej, postępując zgodnie z rozwiązaniem @ jaga, dosłownie wszystko, czego potrzeba, to:
źródło
Widziałem ten sam problem. Ponowne uruchomienie urządzenia (iPhone 6) i przebudowanie aplikacji na urządzenie jest jedyną rzeczą, która go naprawiła. Próbowałem wielu innych wskazówek i sugestii, ale nic więcej nie działało. Pomogło tylko ponowne uruchomienie + przebudowa.
źródło
Moje rozwiązanie @ iOS 11.x:
.jpg
obrazu zamiast.png
. Myślę, że rozmiar pliku obrazu ma znaczenie;.xcassets
;źródło
.xcassets
pomógłMiałem to samo dla aplikacji zainstalowanej z TestFlight. Usuń aplikację -> następnie ponownie uruchom iPhone'a -> następnie zainstaluj ponownie aplikację działa dla mnie. Ponowna instalacja aplikacji lub ponowne uruchomienie urządzenia nie pomogło.
źródło
Miałem ten sam problem, ale ponowne uruchomienie urządzenia nie pomogło. To, co zadziałało, to usunięcie UIImageView z mojej scenorysu uruchamiania i dodanie nowego.
źródło
Czy próbowałeś wyłączyć urządzenie i włączyć je ponownie? Zrób to.
źródło
Dla mnie zadziałało wybranie Resetuj zawartość i ustawienia ... z menu Symulatora
źródło
Wyjmij obrazy z Image.xcassets i dodaj je ponownie do projektu. To zadziałało dla mnie.
źródło
Usuń aplikację z urządzenia mobilnego, a następnie uruchom ponownie urządzenie mobilne i zainstaluj aplikację ponownie. teraz problemy zostaną rozwiązane
źródło
Używam urządzenia iPhone 5s, również spotykam ten problem.
Naprawiam to przez:
Wydaje mi się, że używanie pamięci Xcode jest czymś złym, system może przydzielić trochę pamięci dla Xcode, ponieważ Xcode nie udało się narysować obrazu lunchu (na moim komputerze Xcode działał przez kilka tygodni bez zamknięcia)
źródło
Miałem też dokładnie ten problem w Xcode 7 z urządzeniami iPad i iPhone. Chociaż nie ma to sensu, przez większość czasu mogłem obejść ten problem, ustawiając nie tylko Obraz, ale także Podświetlony obraz w widoku obrazu na ten sam obraz w moich obrazach. Xcassets.
źródło
Myślę, że ekran startowy obsługuje tylko obraz w Assets.xcassets.
źródło
zadziałało dla mnie.
Pierwszy w Xcode Clean de Project.
Jeśli korzystasz z symulatora, usuń aplikację i uruchom ponownie.
Jeśli korzystasz z urządzenia, usuń aplikację i uruchom ponownie urządzenie.
źródło
Ponowne uruchomienie Xcode zrobiło to dla mnie.
Czego nie robić:
źródło
Wybierz ImageView, a następnie usuń rozszerzenie obrazu (.png lub .jpg) na karcie inspektora atrybutów> Widok obrazu> Obraz> Nazwa obrazu.
Na launchscreen.storyboard obraz nie pojawi się, ale będzie tam w urządzeniu. To zadziałało dla mnie.
źródło
To wydawało się błędem iOS. Jak czasem zniknęła animacja systemu.
Teraz ponownie uruchamiam iPhone'a i działa on dla mnie.
źródło
W moim przypadku była to nazwa obrazu .
Dodałem obraz o nazwie
[email protected]
LaunchScreen.xib - jeden z moich starych ekranów uruchamiania tylko do celów testowych. Budowałem na iPhonie X Simulator, obraz się nie pojawił.Zmiana nazwy na neutralną (MyImage.png) rozwiązała problem.
Wygląda na to, że
@2x
była to część problemu, jak również-568h
. Co ma sens na-812h@3x
urządzeniu.źródło
To zbyt ważne. Musi być pusty !
Launch Screen File
źródło
Prostym rozwiązaniem jest użycie JPG zamiast PNG.
źródło
Mam ten sam problem z obrazem Storyboard na ekranie uruchamiania. Usunąłem odniesienie do obrazu z projektu, zmieniłem nazwę obrazu i dodałem go ponownie do projektu. Wszystko działa idealnie.
źródło
Można również 1. usunąć obraz projektu 2. zmienić nazwę obrazu 3. dodać obraz pliku do projektu
To zadziałało dla mnie.
źródło
Miałem ten problem w iOS 10 na iPhonie 6, a także w Symulatorze. Mój obraz był w folderze i wydawało się, że to jest problem. Usunąłem obraz z folderu w Xcode i umieściłem go w katalogu podstawowym projektu, który rozwiązał problem.
źródło
Doświadczam tego samego. Zmieniam rozdzielczość obrazu z 300 pikseli / cal, zmieniam na 72. To działa dla mnie.
źródło
Następnie pomógł mi:
Również bardzo ważne : sprawdź, czy xib nie jest otwarty w innej karcie, może to również powodować!
źródło
Znalazłem proste, ale radykalne rozwiązanie, które działało dla mnie:
1 - Usuń plik: LaunchScreen.storyboard i przenieś go do kosza.
2 - Produkt -> Czysty
3 - Utwórz nowy plik ekranu uruchamiania o nazwie: LaunchScreen.storyboard i umieść w nim swoje obrazy
4 - Zapisz i buduj
To działało dla mnie po wielu godzinach próbowania skomplikowanych metod ... Wygląda na to, że mój LaunchScreen.storyboard został zablokowany i nie można go zapisać lub blokuje go dziwny proces buforowania.
źródło
Nazwa obrazu jest problemem. Zmień nazwę nazwy obrazu używanej w serii ujęć ekranu uruchamiania. Upewnij się, że nie używasz żadnych znaków innych niż alfanumeryczne (nie używaj „_- & @”). Działa dla mnie jak urok.
źródło