Jak naprawić problemy z interfejsem iPhone'a w trybie powiększenia z powodu ekranu uruchamiania
Tło
Tydzień temu wykryliśmy dziwny problem polegający na tym, że nasza aplikacja Naukri iOS zachowywała się nieoczekiwanie w trybie powiększenia na niektórych urządzeniach.
Interfejs użytkownika był zniekształcony i losowo zaciemniał się wokół górnego paska nawigacyjnego i dolnego paska kart.

Problem
Po przejrzeniu kilku rozwiązań i artykułów dotyczących stanu powiększenia zauważyliśmy, że po włączeniu stanu powiększenia aplikacja zaczyna być wyświetlana w trybie skalowanym, a ponieważ nasz ekran uruchamiania nie był zoptymalizowany pod kątem większych ekranów, pojawiały się problemy z interfejsem użytkownika.
Co to jest ekran uruchamiania?
Pojawia się, gdy aplikacja jest uruchamiana po raz pierwszy i sprawia wrażenie, że aplikacja jest szybka i responsywna. Po załadowaniu aplikacji zostanie on zastąpiony pierwszym ekranem aplikacji.
Kiedy sprawdziliśmy logikę implementacji obrazu uruchamiania w naszym projekcie, dowiedzieliśmy się, że różne rozmiary obrazów uruchamiania zostały dodane do naszego pliku xcassets.

Myśleliśmy o ich usunięciu i dodaniu różnych obrazów tylko po to, by wypróbować kilka rzeczy, a potem zauważyliśmy, że dodawanie ekranu uruchamiania z xcassets zostało wycofane.

Rozwiązanie
Po zapoznaniu się z dokumentacją Apple nauczyliśmy się prawidłowych sposobów dodawania ekranu uruchamiania w aplikacji na iOS.
https://developer.apple.com/documentation/xcode/specifying-your-apps-launch-screen/
Jak dodać ekran uruchamiania?
Przed Xcode 6 jedyną opcją, jaką mieliśmy, było dostarczanie statycznych obrazów w katalogu zasobów. Później, wraz z iOS 8, Xcode umożliwił nam zastąpienie statycznego obrazu plikiem scenorysu. Z czasem i nowymi aktualizacjami kilka opcji i funkcji było dodawanych do ekranu startowego.
W przypadku Xcode 12 i nowszych istnieją dwa sposoby na uzyskanie ekranu uruchamiania:
- Korzystanie ze scenorysu (domyślnie), dodawanego podczas tworzenia nowego projektu
- Korzystanie z
plist
konfiguracji
Za pomocą plist
konfiguracji możesz ustawić:
- Obraz
- Określa, czy obraz uruchamiania powinien uwzględniać wstawki bezpiecznego obszaru
- Kolor tła
- Widoczność paska nawigacji
- Widoczność paska kart
- Widoczność paska narzędzi
- Uruchom konfigurację ekranu według schematu adresu URL
- W ustawieniach swojego celu wybierz zakładkę Informacje.
- W sekcji Niestandardowe właściwości docelowe systemu iOS rozwiń klawisz ekranu uruchamiania.
- Kliknij przycisk Dodaj (+), wpisz
UILaunchScreen
i naciśnij klawisz Return, aby dodać klawisz ekranu uruchamiania do listy właściwości. JeśliUILaunchScreen
klucz jest już obecny, możesz pominąć ten krok. - Wybierz
UILaunchScreen
klucz, kliknij przycisk Dodaj (+) i dodaj dodatkowe klucze, aby określić opcje konfiguracji ekranu startowego.

Korzystanie z pliku scenorysu
Jeśli tworzysz swoją aplikację na iOS z szablonu serii ujęć, Xcode dodaje LaunchScreen.storyboard
do twojego projektu domyślny plik ekranu startowego o nazwie . Edytuj LaunchScreen.storyboard
, aby skonfigurować ekran startowy.
Jeśli Twój projekt nie zawiera domyślnego pliku ekranu uruchamiania, dodaj plik ekranu uruchamiania i ustaw plik ekranu uruchamiania dla celu w edytorze projektu.
- Wybierz polecenie Plik > Nowy > Plik.
- W obszarze Interfejs użytkownika wybierz Ekran uruchamiania i kliknij Dalej.
- Nadaj nazwę plikowi ekranu uruchamiania, wybierz lokalizację, wybierz cel, do którego chcesz dodać plik, i kliknij Utwórz.
- W ustawieniach swojego celu wybierz kartę Ogólne i znajdź sekcję „Ikony aplikacji i obrazy uruchamiania”.
- Z wyskakującego menu Plik ekranu uruchamiania wybierz nowy plik ekranu uruchamiania.

Ekrany uruchamiania są mocno buforowane w systemie iOS, aby poprawić wydajność. Dlatego do celów programistycznych i testowych musisz usunąć aplikację i ponownie uruchomić urządzenie (lub symulator).
Możesz także dodać sleep(5) w didFinishLaunchingWithOptions podczas opracowywania ekranu uruchamiania, opóźnienie może być przydatne, aby przyjrzeć się dłużej zaimplementowanemu projektowi.
Dziękuję bardzo za przeczytanie…!
Bibliografia:
https://developer.apple.com/documentation/xcode/specifying-your-apps-launch-screen/