書くこと
・UIProgressView を利用して進捗状況を表示
・UIAlertController を利用して処理完了を通知
処理のイメージ

開発環境
PC | MacBook Air(13-inch,2017) |
PC OS | macOS Catalina(ver 10.15.6) |
IDE | Xcode(ver 12.0.1) |
iPhone | SE(2nd Generation) |
iPhone OS | ver 14.0.1 |
Swift | ver 5.3 |
前提条件
・Xcode を利用してデスクトップ上に Sample
というプロジェクトアプリを作成する
・今回は、 Sample
にある ViewController.swift
にコードを記述する
・UIProgressView
は Main.storyboard
上に配置
・UIProgressView
は画面中央に配置されるよう制約を設定している
・下記コード例はリファクタリングを行っていない
コード例
ViewController.swift
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var progressView: UIProgressView!
override func viewDidLoad() {
DispatchQueue.main.asyncAfter(deadline: .now() + 1){
self.progressView.setProgress(1/10, animated: true)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 2){
self.progressView.setProgress(2/10, animated: true)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 3){
self.progressView.setProgress(3/10, animated: true)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 4){
self.progressView.setProgress(4/10, animated: true)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 5){
self.progressView.setProgress(5/10, animated: true)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 6){
self.progressView.setProgress(6/10, animated: true)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 7){
self.progressView.setProgress(7/10, animated: true)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 8){
self.progressView.setProgress(8/10, animated: true)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 9){
self.progressView.setProgress(9/10, animated: true)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 10){
self.progressView.setProgress(10/10, animated: true)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 11){
let alert:UIAlertController = UIAlertController(title: "お知らせ", message: "処理が終了しました", preferredStyle: .alert)
let action:UIAlertAction = UIAlertAction(title: "OK", style: .default, handler: nil)
alert.addAction(action)
self.present(alert, animated: true, completion: nil)
}
}
override func viewWillAppear(_ animated: Bool) {
progressView.progress = 0
}
}