티스토리 뷰

iOS/iOS-Memo

Launch Screen을 적용해보자!

malrang-malrang 2022. 10. 10. 16:04

Launch Screen

런치 스크린(Launch Screen)이란?

공식문서에 아래와 같이 정의 되어있다.

  • 앱이 시작할 때 즉시 나타나고 앱의 첫 번째 화면으로 빠르게 교체되는 화면으로 앱이 빠르고 반응이 좋다는 인상을 줄 수 있다고 한다.
  • 앱의 데이터를 로딩하는 동안 빈 화면을 보여주지 않기 위해 나타내는 화면으로 표현될 수도 있다.
  • 앱의 아이덴티티를 나타낼 수 있는 화면이기도 하다.
  • 앱만의 아이콘, 이미지를 이용해 유저에게 강한 인상을 심어줄 수 있다.
  • iOS에서는 launch Screen, 안드로이드 에서는 splash라는 표현을 쓰는것 같다.

런치스크린을 만들때는 다음과 같은 지침을 따라야한다.

  1. UIKit만을 사용해야 한다.
  2. 단 하나의 UIView나 UIViewController 객체만을 사용해야 한다.
  3. 액션, 아울렛과 같은 코드를 연결하면 안된다.
  4. UIWebView를 사용하면 안된다.
  5. 사용자정의 클래스를 사용하면 안된다.
  6. 런타임 속성을 사용하면 안된다.
  • 위와 같이 apple에서는 런치스크린을 사용할때 지켜야할 지침을 명시해두었는데, 런치 스크린에서는 최소한의 동작만 하도록 하길 바란다고 느꼈다.
  • (앱 실행시 초기 잠깐 나오는 화면이니 앱 아이콘, 이미지 같은 하나의 ImageView만 포함하는것이 좋다고 한다.)

Hig의 LaunchScreen에서는 다음과 같이 주의점도 명시되어 있다.

  1. 런치 스크린 디자인 시 기기의 다크모드에서의 런치스크린 확인해야한다.
  2. 앱 첫화면과 유사한 런치스크린을 만들 어야한다.
  3. 런치스크린에 텍스트를 넣지 않는다.(지역화 안된다.)
  4. 광고 넣으면 안된다.

스토리보드로 런치 스크린을 만들어보자!

프로젝트를 생성하게 되면 다음과 같이 LaunchScreen.storyboard 파일이 존재하는데 이녀석으로 만들어 주면된다!

  • 이번 프로젝트에 적용하기 위해서 다음과 같이 만들어줬다!

  • 하지만 요렇게 만들어 두기만하면 앱을 실행했을때 아주 잠깐 런치스크린이 보였다가 금방 사라진다.

  • 앱 시작에 필요한 데이터 로딩이 완료되면 런치 스크린이 종료되기 때문이다.

  • (쫌더 오래 보여줬으면 좋겠는데 말이지...)

  • 그럼 다음으로는 런치스크린이 좀더 오래 화면에 노출되도록 해보자!

런치 스크린 시간 조절하기

런치 스크린의 노출 시간을 늘리기 위해서는 AppDelegate의 application(_:didFinishLaunchingWithOptions:)를 사용할수 있다.

func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
    ) -> Bool {
        return true
    }
  • 해당 메서드는 앱을 실행할 준비가 완료되면 시스템이 내부적으로 자동으로 호출해주는 메서드로 pushNotification(푸쉬알림)을 사용할때도 사용되는 메서드다.

  • 요녀석은 Bool값을 반환하는 메서드인데 앱이 URL 리소스를 처리하거나 사용자 활동을 계속 할 수 없으면 flase, 그렇지 않으면 true를 반환한다고 한다.

  • 푸쉬알림으로 앱이 실행된다면 반환값은 무시된다!

  • 그렇다면 요녀석은 true를 반환하게끔 하고 이곳에 지연 로직을 넣게되면 launch 프로세스가 지연된다는 의미이기 때문에 런치 스크린 시간을 조절할수 있게 된다.

func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
    ) -> Bool {
        Thread.sleep(forTimeInterval: 1.5)
        return true
    }
  • 요렇게 지연 로직을 넣어두면 1.5초간 런치스크린이 노출되게 된다.

참고한 자료및 문서

Specifying Your App’s Launch Screen
HIG_Launching
application(_:didFinishLaunchingWithOptions:)

'iOS > iOS-Memo' 카테고리의 다른 글

애플 로그인 구현하기 (Sign in with Apple)  (0) 2022.11.16
APIKey를 숨겨보자!  (0) 2022.10.09
Cache, NSCache, URLCache  (1) 2022.09.30
Underline SegmanetControl  (0) 2022.08.12
NotificationCenter, Modal 사용시 주의점!  (0) 2022.04.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함