UIActivityIndicatorView 通常都會使用在讀取 Loading 畫面中,用來表示程式仍在進行。
原來 UIActivityIndicatorView 是一個UIView。
可以通過調用和方法來控制活動指示器的動畫時間。要在動畫停止時自動隱藏活動指示器。
您可以使用color屬性設置活動指示器的顏色。
讓我們來試試實作吧:
實例化一個 UIActivityIndicatorView ,在後面放入一個閉包,定義初始化的屬性,位置,顏色,style。
let loadIndicatorView:UIActivityIndicatorView = {
var loading = UIActivityIndicatorView()
loading.center = CGPoint(x: ScreenSize.centerX.value, y: ScreenSize.centerY.value)
loading.color = .white
loading.style = .large
return loading
}()
製作一個毛玻璃當作讀取畫面的背景。
let glass:UIView = {
let blurEffect = UIBlurEffect(style: .systemMaterialDark)
let glassView = UIVisualEffectView(effect: blurEffect)
glassView.frame = CGRect(x:0, y:0, width: ScreenSize.width.value, height: ScreenSize.height.value)
glassView.layer.cornerRadius = 15
glassView.clipsToBounds = true
return glassView
}()
為了讓讀取畫面的出現過度更加柔和,把生成的過程加入 animate。為了讓讀取畫面更好復用,用一個funtion包起來。
func loading(){
glass.alpha = 0
self.view.addSubview(glass)
self.view.addSubview(loadIndicatorView)
loadIndicatorView.startAnimating()
let animate = UIViewPropertyAnimator(duration: 3, curve: .easeIn) {
self.navigationController?.navigationBar.isHidden = true
self.glass.alpha = 1
}
animate.startAnimation()
}
讀取完畢亦是如此。
func stopLoading(){
let animate = UIViewPropertyAnimator(duration: 3, curve: .easeIn) {
self.glass.alpha = 0
self.navigationController?.navigationBar.isHidden = false
self.glass.removeFromSuperview()
self.loadIndicatorView.removeFromSuperview()
}
animate.startAnimation()
}
下面是上傳圖片的範例程式碼,因為上傳圖片是一個漫長的過程,所以需要Loading,做過渡。
private func createTask(){
loading()
TaskModelManager.create(cardID,cardEditView) {
self.popView()
}
}