투케이2K

38. (ios/swift) 로딩 화면 연장 및 로직 처리 방법 - LaunchScreen, ViewController 본문

IOS

38. (ios/swift) 로딩 화면 연장 및 로직 처리 방법 - LaunchScreen, ViewController

투케이2K 2021. 10. 31. 11:54

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT


[방법 설명]


[소스 코드 : A_Intro]

import UIKit

class A_Intro: UIViewController {
    
    
    /*
    [클래스 설명]
    1. 인트로 로딩 화면 연장 액티비티
    */
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        print("")
        print("===============================")
        print("[A_Intro >> viewDidLoad() :: 뷰 로드 실시]")
        print("===============================")
        print("")
    }
    
    
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        print("")
        print("===============================")
        print("[A_Intro >> viewWillAppear() :: 뷰 로드 완료]")
        print("===============================")
        print("")
    }
        
    
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        print("")
        print("===============================")
        print("[A_Intro >> viewDidAppear() :: 뷰 화면 표시]")
        print("===============================")
        print("")
        
        // [뷰 컨트롤러 포그라운드, 백그라운드 상태 체크 설정 실시]
        NotificationCenter.default.addObserver(self, selector: #selector(checkForeground), name: UIApplication.willEnterForegroundNotification, object: nil) // [포그라운드]
        NotificationCenter.default.addObserver(self, selector: #selector(checkBackground), name: UIApplication.didEnterBackgroundNotification, object: nil) // [백그라운드]
        
        // [포그라운드 처리 실시]
        checkForeground()
    }
        
    
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        print("")
        print("===============================")
        print("[A_Intro >> viewWillDisappear() :: 뷰 정지 상태]")
        print("===============================")
        print("")
    }
        
    
    
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        print("")
        print("===============================")
        print("[A_Intro >> viewDidDisappear() :: 뷰 종료 상태]")
        print("===============================")
        print("")
        
        // [뷰 컨트롤러 포그라운드, 백그라운드 상태 체크 해제 실시]
        NotificationCenter.default.removeObserver(self, name: UIApplication.willEnterForegroundNotification, object: nil) // [포그라운드]
        NotificationCenter.default.removeObserver(self, name: UIApplication.didEnterBackgroundNotification, object: nil) // [백그라운드]
    }
    
    
    
    // [포그라운드 및 백그라운드 상태 처리 메소드 작성]
    @objc func checkForeground() {
        print("")
        print("===============================")
        print("[A_Intro >> checkForeground() :: 뷰 컨트롤러 포그라운드]")
        print("===============================")
        print("")
        
        // [화면 전환 수행]
        self.intent_A_Main()
        
    }
    @objc func checkBackground() {
        print("")
        print("===============================")
        print("[A_Intro >> checkBackground() :: 뷰 컨트롤러 백그라운드]")
        print("===============================")
        print("")
    }
    
    
    
    // MARK: - [액티비티 화면 전환 수행]
    func intent_A_Main(){
        print("")
        print("===============================")
        print("[A_Intro >> intent_A_Main() :: 화면 전환 수행 실시]")
        print("[전환 :: A_Intro >> A_Main 화면 전환]")
        print("===============================")
        print("")
        
        // [일정 시간 후 작업 수행 : post delayed]
        DispatchQueue.main.asyncAfter(deadline: .now() + 1) { // [2초 후에 동작 실시]
            // [스토리보드 사용 : present 방식 : SubVC = 스토리보드 아이디 지정 / as = 컨트롤러 지정]
            guard let A_MainVC = self.storyboard?.instantiateViewController(identifier:"A_MainVC") as? A_Main
            else {
                return
            }
                    
            // 인텐트로 넘길 데이터 정의 실시 : SubController 쪽에서 변수 선언 필요
            //A_MainVC.name = "test"
            //A_MainVC.age = 0
                    
            A_MainVC.modalPresentationStyle = .fullScreen // 전체화면 (기본은 팝업형태)
            self.present(A_MainVC, animated: false, completion: nil) // Intro >> Main 인텐트 이동 실시
        }
    }

} // [클래스 종료]

[소스 코드 : A_Main]

import UIKit

class A_Main: UIViewController {
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        print("")
        print("===============================")
        print("[A_Main >> viewDidLoad() :: 뷰 로드 실시]")
        print("===============================")
        print("")
    }
    
    
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        print("")
        print("===============================")
        print("[A_Main >> viewWillAppear() :: 뷰 로드 완료]")
        print("===============================")
        print("")
    }
        
    
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        print("")
        print("===============================")
        print("[A_Main >> viewDidAppear() :: 뷰 화면 표시]")
        print("===============================")
        print("")
        
        // [뷰 컨트롤러 포그라운드, 백그라운드 상태 체크 설정 실시]
        NotificationCenter.default.addObserver(self, selector: #selector(checkForeground), name: UIApplication.willEnterForegroundNotification, object: nil) // [포그라운드]
        NotificationCenter.default.addObserver(self, selector: #selector(checkBackground), name: UIApplication.didEnterBackgroundNotification, object: nil) // [백그라운드]
        
        // [포그라운드 처리 실시]
        checkForeground()
    }
        
    
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        print("")
        print("===============================")
        print("[A_Main >> viewWillDisappear() :: 뷰 정지 상태]")
        print("===============================")
        print("")
    }
        
    
    
    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        print("")
        print("===============================")
        print("[A_Main >> viewDidDisappear() :: 뷰 종료 상태]")
        print("===============================")
        print("")
        
        // [뷰 컨트롤러 포그라운드, 백그라운드 상태 체크 해제 실시]
        NotificationCenter.default.removeObserver(self, name: UIApplication.willEnterForegroundNotification, object: nil) // [포그라운드]
        NotificationCenter.default.removeObserver(self, name: UIApplication.didEnterBackgroundNotification, object: nil) // [백그라운드]
    }
    
    
    
    // [포그라운드 및 백그라운드 상태 처리 메소드 작성]
    @objc func checkForeground() {
        print("")
        print("===============================")
        print("[A_Main >> checkForeground() :: 뷰 컨트롤러 포그라운드]")
        print("===============================")
        print("")
    }
    @objc func checkBackground() {
        print("")
        print("===============================")
        print("[A_Main >> checkBackground() :: 뷰 컨트롤러 백그라운드]")
        print("===============================")
        print("")
    }

} // [클래스 종료]

 

반응형
Comments