Notice
Recent Posts
Recent Comments
Link
투케이2K
73. (ios/swift) 원형 로딩 프로그레스 (progress) 생성 실시 - UIActivityIndicatorView 본문
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[소스코드 : S_Extension]
import Foundation
import UIKit
// MARK: - [전역 변수 선언 실시]
var vProgress : UIView?
// MARK: - [extension 정의 실시 : 뷰 컨트롤러]
extension UIViewController {
// MARK: [원형 프로그레스 시작 메소드]
// [호출 방법 : self.progressStart(onView: self.view)]
func progressStart(onView : UIView) {
print("")
print("===============================")
print("[S_Extension >> progressStart() :: 로딩 프로그레스 시작 실시]")
print("===============================")
print("")
// [프로그레스를 담는 부모 뷰 : 검정색]
let progressView = UIView.init(frame: onView.bounds)
progressView.backgroundColor = UIColor.init(red: 0.5, green: 0.5, blue: 0.5, alpha: 0.5)
// [Indicator : 원형 프로그레스 생성 실시]
let activityIndicator = UIActivityIndicatorView()
// [사이즈 지정 실시]
//activityIndicator.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
activityIndicator.transform = CGAffineTransform(scaleX: 2.5, y: 2.5)
// [위치 지정 실시]
activityIndicator.center = progressView.center
// [색상 지정 실시]
activityIndicator.color = UIColor.red
// [hidden 시 애니메이션 종료 여부 지정]
activityIndicator.hidesWhenStopped = true
// [스타일 지정 실시]
activityIndicator.style = UIActivityIndicatorView.Style.white
// [애니메이션 시작 수행]
activityIndicator.startAnimating()
// [비동기 ui 처리 수행 실시]
DispatchQueue.main.async {
progressView.addSubview(activityIndicator) // 부모에 Indicator 자식 추가
onView.addSubview(progressView) // 뷰컨트롤러에 부모 추가
}
vProgress = progressView
}
// MARK: [원형 프로그레스 종료 메소드]
// [호출 방법 : self.progressStop()]
func progressStop() {
print("")
print("===============================")
print("[S_Extension >> progressStop() :: 로딩 프로그레스 종료 실시]")
print("===============================")
print("")
DispatchQueue.main.async {
vProgress?.removeFromSuperview() // 뷰에서 제거 실시
vProgress = nil
}
}
}
[소스코드 : ViewController]
import UIKit
class ViewController: UIViewController {
// MARK: - [뷰 메모리 로드 실시]
override func viewDidLoad() {
super.viewDidLoad()
print("")
print("===============================")
print("[ViewController >> viewDidLoad() :: 뷰 메모리 로드 실시]")
print("===============================")
print("")
// [로딩 프로그레스 호출 수행 실시]
self.progressStart(onView: self.view)
// [일정 시간 후 작업 수행 : 로딩 프로그레스 종료 호출]
DispatchQueue.main.asyncAfter(deadline: .now() + 6) { // [6초 후에 동작 실시]
print("")
print("===============================")
print("[ViewController >> viewDidLoad() :: 시간 만료]")
print("===============================")
print("")
self.progressStop()
}
}
}
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
75. (ios/swift) 라벨 멀티 라인 설정 방법 (label multi line) - 스토리보드 (0) | 2021.12.09 |
---|---|
74. (ios/swift) ios 파이어베이스 리모트 서비스 (firebase remote config) 사용해 앱 최신 버전 관리 실시 (0) | 2021.12.07 |
72. (ios/swift) assets 앱 런처 아이콘 삽입 방법 참고 사이트 (0) | 2021.12.06 |
71. (ios/swift) 버튼 button 텍스트 색상 변경 및 배경 이미지 삽입 방법 (0) | 2021.12.06 |
70. (ios/swift) 앱 숏컷 아이콘 이미지 커스텀 지정 방법 - ShortcutIcon (0) | 2021.12.04 |
Comments