티스토리 뷰



UIActivityIndicatorView 를 이용한 간단한 로딩 뷰 띄우기 (뷰 교체 형식)



1. UIViewController 를 상속받을 ExtensionVC.swift 를 하나 만든다.










2. ExtensionVC.swift 에 extension 하여 아래와 같은 코드를 작성한다.



import UIKit


class ExtensionVC: UIViewController {

    override func viewDidLoad() {

        super.viewDidLoad()

    }

}


extension UIViewController {

    class func displaySpinner(onView: UIView) -> UIView {

        let spinnerView = UIView.init(frame: onView.bounds)

        

        spinnerView.backgroundColor = UIColor.init(red: 0.5, green: 0.5, blue: 0.5, alpha: 1.0)

        let ai = UIActivityIndicatorView.init(style: .whiteLarge)

        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()

        }

    }

}



3. 로딩화면을 사용할 ViewController 에서 UIViewController 대신, ExtensionVC 를 상속받는다.



class MainVC: ExtensionVC, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {...}



4. displaySpinner() 로 로딩창을 호출한다.


let sv = UIViewController.displaySpinner(onView: self.view)




5. removeFromSuperView() 로 로딩창을 파괴한다.


sv.removeFromSuperview()






공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함