[swift] - Swift에서 네트워크 활동 표시기를 관리하는 방법

소개

네트워크 활동 표시기는 앱이 서버와 통신할 때 유용한 시각적인 피드백을 제공합니다. 사용자에게 진행 상황을 알려주고, 장기간의 대기 시간 동안 화면이 멈추지 않았음을 보여줍니다. 이번 블로그에서는 Swift에서 네트워크 활동 표시기를 관리하는 방법에 대해 알아보겠습니다.

UIActivityIndicatorView 사용하기

가장 간단한 방법은 UIActivityIndicatorView를 사용하여 네트워크 활동을 표시하는 것입니다. 이 클래스는 흐르는 휠 모양의 인디케이터를 제공합니다.

let activityIndicatorView = UIActivityIndicatorView(style: .large)
activityIndicatorView.center = view.center
activityIndicatorView.startAnimating()

view.addSubview(activityIndicatorView)

위 코드는 UIActivityIndicatorView를 생성하고, 화면 중앙에 위치시킨 후 애니메이션을 시작하는 예시입니다. 만약, 네트워크 활동이 끝났을 때 인디케이터를 제거하려면 stopAnimating() 메서드를 호출하면 됩니다.

진행 상황 표시하기

네트워크 요청이 진행되는 동안 사용자에게 진행 상황을 알려주기 위해서는 추가적인 작업이 필요합니다. UIActivityIndicatorView 대신 진행 상황을 표시할 수 있는 커스텀 뷰를 만들어보겠습니다.

1. 커스텀 뷰 만들기

class ProgressView: UIView {
    private let progressLabel = UILabel()
    
    init() {
        super.init(frame: .zero)
        
        // 진행 상황 표시 라벨 설정
        progressLabel.textAlignment = .center
        progressLabel.textColor = .black
        
        addSubview(progressLabel)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
        progressLabel.frame = bounds
    }
    
    func showProgress(progress: Float) {
        progressLabel.text = "\(Int(progress * 100))%"
    }
    
    func hideProgress() {
        progressLabel.text = ""
    }
}

2. 네트워크 요청 시 진행 상황 표시하기

let progressView = ProgressView()

// 네트워크 요청 시작 시
progressView.showProgress(progress: 0.0)

// 네트워크 진행 상황 업데이트 시
let progress: Float = 0.5
progressView.showProgress(progress: progress)

// 네트워크 요청 종료 시
progressView.hideProgress()

위 코드에서는 ProgressView 클래스를 생성하고, 네트워크 요청 시작 시 showProgress(progress:) 메서드를 호출하여 진행 상황을 업데이트하고, 종료 시 hideProgress()를 호출하여 숨깁니다.

결론

네트워크 활동 표시기는 사용자에게 앱의 동작 상황을 알려주는 중요한 요소입니다. Swift에서는 UIActivityIndicatorView를 사용하거나 커스텀 뷰를 만들어 네트워크 활동을 관리할 수 있습니다. 적절한 방법을 선택하여 진행 상황을 표시하고, 사용자에게 반응이 없는 것처럼 보이지 않도록 주의해야 합니다.

참고 자료