[iOS/Swift] 런치 스크린(Launch Screen) / 스플래시(Splash) 화면
안녕하세요. 개발하는 정주입니다.
오늘은 런치 스크린에 대해 포스팅하려고 합니다.
목차
런치 스크린(Launch Screen)이란?
공식 문서에서 런치 스크린(Launch Screen)는 아래처럼 정의되어 있습니다.
Every iOS app must provide a launch screen, a screen that displays while your app launches.
The launch screen appears instantly when your app starts up and is quickly replaced with the app’s first screen.
앱이 시작할 때 즉시 나타나고 앱의 첫 번째 화면으로 빠르게 교체되는 화면으로 앱이 빠르고 반응이 좋다는 인상을 줄 수 있다고 합니다.
앱의 데이터를 로딩하는 동안 빈 화면을 보여주지 않기 위해 나타내는 화면으로 표현될 수도 있습니다.
앱의 아이덴티티를 나타낼 수 있는 화면이기도 합니다. 앱만의 아이콘, 이미지를 이용해 유저에게 강한 인상을 심어줄 수 있습니다.
iOS에서는 launch screen, 안드로이드(aOS)에서는 splash라는 표현을 많이 합니다.
런치 스크린 만들기
이번에는 Xcode에서 iOS의 런치 스크린을 만들어 보도록 하겠습니다.
런치 스크린은 Xcode의 LaunchScreen 스토리보드에서 만들 수 있습니다.
저는 예제용으로 주황색 런치 스크린을 만들어 보았습니다.
그러면 위 영상처럼 짧게 런치 스크린이 나옵니다.
몇 가지 런치 스크린을 만들 때 주의할 점이 있습니다.
- UIKit만을 사용해야 합니다.
- 단 하나의 UIView나 UIViewController 객체만을 사용해야 합니다.
- 액션, 아울렛과 같은 코드를 연결하면 안 됩니다.
- UIWebView를 사용하면 안 됩니다.
- 어떤 커스텀 클래스도 사용하면 안 됩니다.
- 런타임 속성을 사용하면 안 됩니다.
위 주의사항의 요점은 런치 스크린에서는 최소한의 동작만 하라는 것입니다. 따라서 앱 아이콘, 이미지같은 단 하나의 ImageView만 포함하는 것이 가장 좋습니다.
런치 스크린 시간 조절하기
위 영상처럼 기존 런치 스크린 시간은 매우 짧습니다. 앱 시작에 필요한 데이터 로딩이 완료되면 런치 스크린이 종료되기 때문입니다.
런치 스크린의 시간을 늘리기 위해서는 AppDelegate 의 application(_:didFinishLaunchingWithOptions:) 코드를 수정해야 합니다.
application(_:didFinishLaunchingWithOptions:)은 launch 프로세스가 종료되면 true를 반환해주는 메서드입니다.
즉 이곳에서 지연 로직을 넣으면 launch 프로세스가 지연된다는 의미이고 그 결과 런치 스크린 시간이 조절됩니다.
sleep(5)
저는 5초간 sleep을 주도록 하겠습니다.
런치 스크린이 5초간 지속되는 것을 볼 수 있습니다.
참조
https://developer.apple.com/documentation/xcode/specifying-your-apps-launch-screen/
https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/launch-screen
https://brunch.co.kr/@kangsigner/1
https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622921-application
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.