투케이2K

342. (ios/swift5) [유틸 파일] startLoadingAlert : alert 로딩 프로그레스 시작 및 종료 수행 본문

IOS

342. (ios/swift5) [유틸 파일] startLoadingAlert : alert 로딩 프로그레스 시작 및 종료 수행

투케이2K 2023. 10. 8. 21:30

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

// -----------------------------------------------------------------------------------------
// MARK: - [전역 변수 선언]
// -----------------------------------------------------------------------------------------
private let ACTIVITY_NAME = "C_Ui_View"

var progressAlert : UIAlertController?





    // -----------------------------------------------------------------------------------------
    // MARK: [alert 로딩 프로그레스 시작 메소드]
    // -----------------------------------------------------------------------------------------
    // [호출 방법 : self.startLoadingAlert(onView : self.view, title: "Please wait ...", message: "", okBtn: "닫기")]
    // -----------------------------------------------------------------------------------------
    func startLoadingAlert(onView : UIView, title: String, okBtn: String) {
        S_Log._D_(description: "로딩 프로그레스 시작 수행", data: [
            "TITLE :: " + String(describing: title)
        ])
        
        DispatchQueue.main.async {
         
            // [progressAlert 생성]
            progressAlert = UIAlertController(title: title, message: "", preferredStyle: .alert)
            progressAlert?.addAction(UIAlertAction(title: okBtn, style: .default) { (action) in
                
                // [취소 버튼 클릭 이벤트 내용 정의 실시]
                self.stopLoadingAlert()
                
            })

            // [progressAlert 표시]
            if progressAlert != nil {
            
                self.present(progressAlert!, animated: true, completion: {
                    
                    //let margin:CGFloat = 8.0 // 마진
                    let rect = CGRect(x: 2, y: 2, width: 60 , height: 60) // 크기
                    
                    // [Indicator : 원형 프로그레스 생성 실시]
                    let activityIndicator = UIActivityIndicatorView(frame: rect)
                    
                    // [색상 지정 실시]
                    activityIndicator.color = UIColor.purple
                
                    // [hidden 시 애니메이션 종료 여부 지정]
                    activityIndicator.hidesWhenStopped = true
                    
                    // [스타일 지정 실시]
                    if #available(iOS 13.0, *) {
                        activityIndicator.style = .medium

                    }
                    else {
                        activityIndicator.style = UIActivityIndicatorView.Style.white
                    }
                
                    // [애니메이션 시작 수행]
                    activityIndicator.startAnimating()
                    progressAlert!.view.addSubview(activityIndicator) // alert에 추가 실시
                    
                })
                
            }
            
        }
        
    }
    
    
    
    
    
    // -----------------------------------------------------------------------------------------
    // MARK: [원형 프로그레스 종료 메소드]
    // -----------------------------------------------------------------------------------------
    // [호출 방법 : self.stopLoadingAlert()]
    // -----------------------------------------------------------------------------------------
    func stopLoadingAlert() {
        S_Log._D_(description: "로딩 프로그레스 종료 실시", data: nil)
        
        DispatchQueue.main.async {
            if progressAlert != nil {
                
                progressAlert?.dismiss(animated: false)
                progressAlert = nil
                
            }
        }
    }

 

[결과 출력]

 

반응형
Comments