반응형
문제 상황
Activity Indicator를 사용해 로딩표시를 하려는데, 로딩 시작할때 안뜨고 로딩이 다 끝날때쯤 반짝 뜨고 사라짐.
Chat GPT와 몇번의 대화를 통해 실마리를 잡음.
메인스레드에서 뒤에오는 작업(로딩부분)에 밀려서 인디케이터가 나중에 뜸.
@objc private func okButtonPressed() {
mainView.activityIndicator.startAnimating() //인디케이터 작동명령
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { //딜레이 주기
if let pdfData = PDFManager.shared.makePDF(...) {
let activityViewController = UIActivityViewController(activityItems: [pdfData], applicationActivities: nil)
self.present(activityViewController, animated: true) {
self.mainView.activityIndicator.stopAnimating()
}
}
}
}
해결 방법: 딜레이 추가
다음 작업을 다른 스레드로 보내는게 합당해 보였지만, 다음 작업에도 UI 함수들이 숨어있어서 복잡해질것 같았다.
그래서 약간의 딜레이를 주어 인디케이터 작업과 다음 작업간에 구분을 주어서 애니메이션이 우선적으로 표시되도록 보장함.
반응형
'iOS' 카테고리의 다른 글
육아앱 추천 3가지 (5) | 2024.11.25 |
---|---|
[MacOS] 맥북 아이맥 클립보드앱 3가지 비교 : Clipy, Paste, Maccy (0) | 2024.11.21 |
[iOS] Widget에서 이미지 로드 실패(Failed to load image in Widget) (5) | 2024.09.27 |
[iOS] UIView를 UIImage로 만들기: 이미지 백그라운드컬러 바꾸기 (0) | 2024.06.29 |
[iOS/Swift] Xcode15 업데이트후 빌드실패: WidgetKit Framework 중복 복사 이슈 (1) | 2023.12.08 |