모바일 프로그래밍/IOS참고자료

[iOS] Launch Image, Launch Screen

Dannian 2022. 8. 23. 16:49
반응형

한동안 바빠서 글을 정리 못 하다가 간단한 내용이라 빠르게 글을 정리해서 올려봅니다..ㅠㅠ

이번엔 이젠 더이상 사용되지 않는 Launch Image, 그리고 현재 사용하고 있는 방식인 Launch Screen에 대해서 간단히 알아볼까 합니다.

제가 현재 유지보수 하고 있는 프로젝트들에서 가끔 발생하던 문제 때문에 조금 헤맸는데, 다른 분들은 이런 상황에서 조금이라도 덜 시간 쓰시길 바래서 작성해봅니다.

 

먼저 Launch Image, Launch Screen에 대해서 알아보기 전에 제가 겪은 문제에 대해서 간단히 설명과 해결법을 말씀드려봅니다.

대부분 2014년 이전(혹은 2014년 이후 일부 프로젝트가 이런 식일 수 있습니다.) 프로젝트들의 경우 Launch Image를 사용하거나 빈 상태로 넣었을 겁니다.(특히 엔터프라이즈의 경우 무시되는 경우가 은근 있더라구요)

이 경우 앱을 실행하게 되면 위 아래 여백이 엄청나게 크게 보입니다.

(첨부 이미지는 보안 내용 가리는 수정 후 넣을 예정)

예전 디바이스의 경우 큰 문제는 없는데, 점점 화면 비율이 다양해지고 커지면서 이 커지는 현상이 특히 눈에 띌 정도로 보이더라구요.

이 경우 Launch Screen.storyboard를 만든 후 Target의 Launch Screen File에 세팅만 해주면 여백 문제는 간단히 해결됩니다.

물론 레거시 프로젝트들은 Safe Area Layout Guide, Auto Layout Constraint도 설정되지 않았을 수 있을테니 깨지는게 많아서 손을 좀 많이 대셔야 하겠지만요...(지금 제 상황)

 

1. Launch Image

현재는 사용되지 않는 방식(deprecated)으로서 Launch Images Source라는 항목에 원하는 이미지들을 넣는 방식입니다.

앱이 실행된 후 이미지를 하나 잠깐 띄우고 메인으로 넘어갈 때 사용되는 방식이었으며, Launch Screen과 다르게 Auto Layout등을 활용 할 수 없는 방식입니다.

Assets.xcassets에 들어간 후 Launch Image라는 항목을 생성하고 그 안에 각 iOS버전에 맞는 비율에 image들을 넣는 식인데, 내용을 보기만 해도 다양한 ratio에 일일히 맞춰 넣어야 하는 것을 아실 수 있을겁니다.

이 경우 스플래시 표시 시간 제어를 위해 진짜 골때리게도 didFinishLaunchingWithOptions에서 main thread에 sleep을 걸어서 시간을 강제로 늘렸던 적이 있네요...

(예전 처음에 앱 개발을 시작 할 때 이 짓을 했던게 새삼스럽게 기억나네요..)

관련한 이미지는 예전 Xcode 버전을 구해서 촬영하거나 다른 블로거의 이미지를 사용해도 되는지 허락 받은 뒤 추가 할 수 있을 것 같네요..

 

2. Launch Screen

지금 사용하는 방식이고, 앱이 시작 될 때 잠시 나타났다가 앱의 첫 번째 화면으로 빠르게 전환됩니다.

앱이 실행되고 사용 준비가 된 것을 유저에게 알리는 역할을 하고, 시각적인 효과를 주기 위해서 사용되는 것은 아니라고 합니다.(참고)

문서에서 살펴보면 다음과 같은 문구가 있습니다.

Avoid including text on your launch screen.
Because the content in a launch screen doesn't change, any text you display won’t be localized.

Launch Screen에는 텍스트 사용을 하지 말라고 합니다.

텍스트의 현지화가 되지 않는 것이 그 이유라고 하고, 실제로 많은 앱들이 처음 화면에 로고 또는 앱의 테마 컬러를 이용해서 표시하는 경우가 많습니다.

애니메이트 또는 텍스트가 들어가는 것은 Launch Screen이후 Main Interface에 설정된 화면 또는 AppDelegate(Scene Delegate)에서 설정해준 ViewController로 이동하게 됩니다.

 

예전 자료들과 StackOverflow를 뒤지다보니 예전 생각도 나고 오랜만에 재밌게 문제 찾았었네요..

반응형