Things take time

[SWIFT] Launch Image에 이미지 등록 및 delay 시간 주기 본문

iOS (기능)

[SWIFT] Launch Image에 이미지 등록 및 delay 시간 주기

겸손할 겸 2017. 6. 13. 10:11

[Launch Image]


참고로 알아둘 것은 Launch Screen File이란 것과 Launch Image Source 두 가지가 있다는 것이다.



Launch Images Source는 앱이 실행되고 그냥 이미지 하나 잠깐 띄우고 메인으로 넘어갈때 활용하면 되는, 기존의 기능이고 Launch Screen File이란 Launch Screen용 스토리보드 파일을 따로 만들어서, 일반 뷰 컨트롤러와 마찬가지로 프로그래밍 제어뿐 아니라 Auto Layout등을 활용할 수 있다. (처음 쓴 말과 동일) 이를 위해서는 storyboard파일을 위의 캡쳐에서 Launch Screen File에 연결하면 된다.

이 작업을 위해서는 .storyboard의 Identity and Type의 Interface Builder Document에서 Use as Launch Screen을 해제하면 된다. 


내가 필요한 것은 그냥 인트로 이미지 하나와 해당 인트로 이미지가 지정된 시간이 지난후에 Main.storyboard로 넘어가도록 할 것이다. 그러므로 위처럼 Screen File(Storyboard 파일)은 사용하지 않을 것이기에 공란으로 비워둔다.


방법은 간단하다.


1. Assets.xcassets로 들어가 Launch Image를 추가한다. 좌측에서 우클릭으로 들어갈 수 있다.




2. 그리고 우측의 Attributes Inspector에서 사용할 분류를 지정한다. Portrait는 세로, Landscape는 가로모드이다.


3. 사용할 iOS버전을 체크하고 생성된 크기에 따라 이미지 해상도를 맞춰서 넣어주면 된다. (하단 참고).. 그런데 이 이미지의 이름을 Default(320,480), Default@2x(640,960)처럼 만들어서 넣는게 원칙이라하는데.. 난 그거 모르고 그냥 내가 원하는 파일명으로 했는데도 잘 된다. 버전업에 따른 업데이트인지.. 아닌지는 모르겠다. 불안하면 Default 검색하면 나오니까 그 해상도에 맞춰서 변경하고, 드래그해서 넣어주면 된다.


4. AppDelegate.swift라는 클래스 파일의 application함수안에 아래처럼 쓰레드를 넣는다. 이는 메인스토리보드에 연결된 init view를 열때 호출되는 함수이므로.. 여기에 쓰레드로 메인 뷰를 열 시간을 지연시켜버리는 것이다.

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        Thread.sleep(forTimeInterval: 2.0)
        return true
    }

실행 결과 인트로 이미지를 띄우고 해당 시간 지연된 후, 메인 스토리보드에 연결된 시작 뷰로 넘어가는 것을 확인할 수 있다.