[swift] Swift 앱에서 다양한 런치 스크린 효과 구현하기

런치 스크린은 앱이 시작될 때 보여지는 초기화면입니다. 이것은 사용자 경험을 향상시키고 앱이 로딩될 동안 사용자들에게 시각적인 피드백을 제공하는 데 중요한 역할을 합니다. 이번 블로그 포스트에서는 Swift 앱에서 다양한 런치 스크린 효과를 구현하는 방법을 알아보겠습니다.

1. 정적 이미지 사용하기

가장 간단하고 널리 사용되는 방법은 정적 이미지를 사용하여 런치 스크린을 구현하는 것입니다. 이 방법은 이미지 파일을 사용하여 앱의 시작 화면을 나타냅니다. 아래의 코드는 LaunchScreen.storyboard 파일에서 정적 이미지를 설정하는 방법을 보여줍니다.

let launchScreenVC = UIStoryboard(name: "LaunchScreen", bundle: nil).instantiateInitialViewController()
self.window?.rootViewController = launchScreenVC
self.window?.makeKeyAndVisible()

DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
    // 실제 앱 화면으로 전환
    let mainVC = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()
    self.window?.rootViewController = mainVC
}

위의 코드에서는 정적 이미지를 로딩한 후, 일정 시간이 지나면 실제 앱 화면으로 전환됩니다.

2. 동적 애니메이션 사용하기

정적 이미지가 아닌 동적 애니메이션을 사용하여 런치 스크린을 더 생동감 있게 구현할 수도 있습니다. 이를 위해 AVFoundation 라이브러리를 사용하여 비디오 파일을 재생하거나, Core Animation을 사용하여 애니메이션 효과를 추가할 수 있습니다.

2.1 비디오 재생하기

비디오를 사용하여 앱의 시작 화면을 재생하는 방법은 다음과 같습니다.

import AVKit

func playVideoOnLaunchScreen() {
    guard let videoURL = Bundle.main.url(forResource: "launch_screen_video", withExtension: "mp4") else {
        return
    }

    let player = AVPlayer(url: videoURL)
    let playerLayer = AVPlayerLayer(player: player)

    playerLayer.videoGravity = .resizeAspectFill
    playerLayer.frame = UIScreen.main.bounds

    let launchScreenVC = UIViewController()
    launchScreenVC.view.layer.addSublayer(playerLayer)

    self.window?.rootViewController = launchScreenVC
    self.window?.makeKeyAndVisible()

    player.play()
}

// 앱이 시작될 때 비디오 재생하기
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    playVideoOnLaunchScreen()
    return true
}

2.2 Core Animation 사용하기

Core Animation을 사용하여 런치 스크린에 애니메이션 효과를 적용할 수도 있습니다. 다음은 로딩 인디케이터로 애니메이션을 구현하는 예시입니다.

func showActivityIndicatorOnLaunchScreen() {
    let activityIndicator = UIActivityIndicatorView(style: .large)
    activityIndicator.frame = UIScreen.main.bounds

    let launchScreenVC = UIViewController()
    launchScreenVC.view.backgroundColor = .white
    launchScreenVC.view.addSubview(activityIndicator)

    self.window?.rootViewController = launchScreenVC
    self.window?.makeKeyAndVisible()

    activityIndicator.startAnimating()

    DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
        activityIndicator.stopAnimating()
        // 실제 앱 화면으로 전환
        let mainVC = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()
        self.window?.rootViewController = mainVC
    }
}

위의 코드에서는 UIActivityIndicatorView를 사용하여 로딩 인디케이터를 보여주고, 일정 시간 후에 애니메이션이 종료되면 실제 앱 화면으로 전환됩니다.

결론

Swift 앱에서 다양한 런치 스크린 효과를 구현하는 방법을 알아보았습니다. 정적 이미지, 비디오 재생, 그리고 Core Animation을 사용하여 원하는 효과를 구현할 수 있습니다. 앱의 시작 화면은 사용자에게 첫 인상을 남기는 중요한 부분이므로, 다양한 효과들을 활용하여 앱을 더욱 멋지게 만들어보세요!


참고 자료: