티스토리 뷰

iOS & swift

Launch Screen에 Gif 넣기

ggasoon2 2023. 11. 17. 22:00

우선 Launch Screen에는

custom class, custom UI 등을 사용할 수 없습니다. (오직 Storyboard + 기본 UI Component만 사용 가능)

 

그래서 Launch Screen에 Gif(Custom Class)는 넣을 수 없고 대신

 

 

이런식으로 Launch Screen 이후 Custom Splash VC를 추가하여 gif를 1 ~ 2초 재생한 뒤

Main VC로 가는 방법을 선택할 수 있습니다.

 

 

SceneDelegate에서

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        
        guard let _ = (scene as? UIWindowScene) else { return }
        let rootVC = SplashViewController()
        self.window?.rootViewController = rootVC
        self.window?.makeKeyAndVisible()
        
        guard let _ = (scene as? UIWindowScene) else { return }
    }

 

이렇게 custom 한 SplashVC를 rootVC로 설정해줍니다

 

그러고 SplashVC에서 1~2초간 재생합니다

 

우선 gif 를 재생하기 위해서는 https://github.com/kaishin/Gifu

 

GitHub - kaishin/Gifu: High-performance animated GIF support for iOS in Swift

High-performance animated GIF support for iOS in Swift - GitHub - kaishin/Gifu: High-performance animated GIF support for iOS in Swift

github.com

이거 가져와주시고

 

Splash VC에서 import Gifu 합니다

그리고 Asset이 아닌 바깥에 gif를 옮겨주시고

 

 

 

Custom Splash VC에 

private let gifImage: GIFImageView = {
        let img = GIFImageView()
        img.translatesAutoresizingMaskIntoConstraints = false
        img.isUserInteractionEnabled = true
        img.contentMode = .scaleAspectFit
        return img
    }()

 

GIFImageView 객체를 선언해준다음,

 

 

gifImage.animate(withGIFNamed: "Splash")
        Timer.scheduledTimer(withTimeInterval: 1.6, repeats: false, block: {[weak self] timer in
            
            self?.gifImage.stopAnimatingGIF()
            self?.goMain()
        })
        
        func goMain() {
        let Storyboard = UIStoryboard.init(name: "Main", bundle: nil)
        guard let VC = Storyboard.instantiateViewController(identifier: "Main") as? TabbarViewController else { return }
        VC.modalPresentationStyle = .fullScreen
        self.present(VC, animated: false, completion: nil)
    }

 

gifImage.animate(withGIFNamed: "Splash") 코드로 gifImage를 재생해줍니다

그리고 Timer를 설정해 일정 시간 뒤 MainVC로 보내주는 코드를 작성합니다

 

Storyboard id를 main 으로 설정해주었는데

 

설정이 안되어있다거나 수정하려면 여기를 참고하시면 됩니다.

 

 

그러면 이제 

 

이렇게 Launch Screen에 Custom Splash VC에서 진행될 동일한 이미지를 띄워놓고 Gif를 재생하면 됩니다

 

감사합니다

댓글