iOS/개념 & 개발

[iOS/Swift] 런치 스크린 (Launch Screen) / 스플래시 화면

유정주 2022. 1. 2. 00:10
반응형

[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 스토리보드에서 만들 수 있습니다.

    저는 예제용으로 주황색 런치 스크린을 만들어 보았습니다.

     

     

    그러면 위 영상처럼 짧게 런치 스크린이 나옵니다.

     

    몇 가지 런치 스크린을 만들 때 주의할 점이 있습니다.

    1. UIKit만을 사용해야 합니다.
    2. 단 하나의 UIView나 UIViewController 객체만을 사용해야 합니다.
    3. 액션, 아울렛과 같은 코드를 연결하면 안 됩니다.
    4. UIWebView를 사용하면 안 됩니다.
    5. 어떤 커스텀 클래스도 사용하면 안 됩니다.
    6. 런타임 속성을 사용하면 안 됩니다.

    위 주의사항의 요점은 런치 스크린에서는 최소한의 동작만 하라는 것입니다. 따라서 앱 아이콘, 이미지같은 단 하나의 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

     


    아직은 초보 개발자입니다.

    더 효율적인 코드 훈수 환영합니다!

    공감 댓글 부탁드립니다.

    반응형