[iOS/Swift] 로딩창 구현하기

Nakyung Lee·2023년 8월 17일
0

iOS

목록 보기
11/14

회원가입 처리가 되는 동안 약간의 딜레이가 있어서 로딩창을 구현해 보았다!

🧑‍🏫 로딩창을 만들어 보자!

1️⃣ UIViewController를 상속받는 클래스 생성

import UIKit

class ExtensionVC: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

}

extension UIViewController {
    class func displaySpinner(onView: UIView) -> UIView {
        let spinnerView = UIView.init(frame: onView.bounds)
        
        spinnerView.backgroundColor = .white
        
        let ai = UIActivityIndicatorView.init(style: .medium)
        ai.startAnimating()
        ai.center = spinnerView.center
        
        DispatchQueue.main.async {
            spinnerView.addSubview(ai)
            onView.addSubview(spinnerView)
        }
        
        return spinnerView
    }
    
    class func removeSpinner(spinner: UIView) {
        DispatchQueue.main.async {
            spinner.removeFromSuperview()
        }
    }
}

2️⃣ 로딩 화면을 사용할 VC에서 UIViewController 대신 ExtensionVC를 상속

class SelectViewController: ExtensionVC, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {
	...
}

3️⃣ 로딩창이 필요한 부분에서 호출

나는 로딩 시작과 끝이 각각 다른 함수 내에서 이루어져서 먼저 UIView 변수를 위에 선언해 주었다.

weak var sv: UIView!

func signUp() {
	sv = UIViewController.displaySpinner(onView: self.view)
    ...
}

4️⃣ 로딩창 끝내기

self.sv.removeFromSuperview()

😎 결과물

회원가입이 진행되는 동안 로딩창이 나오고 통신이 끝나면 로딩창이 꺼진 후 홈 화면으로 이동된다.

참고 블로그

(iOS/swift4) 간단한 로딩 view 띄우기 (UIActivityIndicatorView)

profile
앱 개발자를 꿈꾸는 ✨

1개의 댓글

comment-user-thumbnail
2023년 8월 17일

많은 도움이 되었습니다, 감사합니다.

답글 달기