다음 코드는 김종권의 iOS 앱 개발 알아가기 블로그로부터 참고하였습니다.
LoadingService에서 showLoading은 로딩중임을 알리는 Indicator가 화면에 표시되게 만들어주는 메서드이다. 최상단의 뷰를 가져와서 그 위에 Indicator를 표시하며, 이미 표시중인 indicator가 있는 경우 그것을 그대로 사용한다.
import Foundation
import UIKit
class LoadingService {
static func showLoading() {
DispatchQueue.main.async {
// 아래 윈도우는 최상단 윈도우
guard let window = UIApplication.shared.windows.last else { return }
let loadingIndicatorView: UIActivityIndicatorView
// 최상단에 이미 IndicatorView가 있는 경우 그대로 사용.
if let existedView = window.subviews.first(
where: { $0 is UIActivityIndicatorView } ) as? UIActivityIndicatorView {
loadingIndicatorView = existedView
} else { // 새로 만들기.
loadingIndicatorView = UIActivityIndicatorView(style: .large)
// 아래는 다른 UI를 클릭하는 것 방지.
loadingIndicatorView.frame = window.frame
loadingIndicatorView.color = .brown
window.addSubview(loadingIndicatorView)
}
loadingIndicatorView.startAnimating()
}
}
static func hideLoading() {
DispatchQueue.main.async {
guard let window = UIApplication.shared.windows.last else { return }
window.subviews.filter({ $0 is UIActivityIndicatorView })
.forEach { $0.removeFromSuperview() }
}
}
}
'iOS::스위프트(swift) > just swift' 카테고리의 다른 글
Swift URLSession GET/POST (0) | 2021.07.09 |
---|---|
iOS/Swift 앱의 라이프 사이클 (0) | 2021.05.11 |
iOS/Swift 푸시 알림 원리 (0) | 2021.05.11 |
Swift/iOS MapKit 으로 지도에 이동 기록 나타내기(with LocalDB Realm) (1) | 2021.05.07 |
Swift/iOS Naver API 받아 써보기(feat. Nmapsmap 오류 해결) (0) | 2021.05.03 |
최근댓글