UIProgressViewの簡単復習App

# 完成形はこんな感じです

<img width="150" alt="4BFC56C5-9DB9-442C-B027-CA862EC3AD2B_1_201_a.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1466343/ccf3b800-e772-9099-52ef-353e4cde36a5.jpeg"> <img width="150" alt="7A2084BC-3349-4A26-9F35-317D978BE25D_1_201_a.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1466343/26d34eb0-aa6a-b03a-1190-68b384d7bba4.jpeg"> <img width="150" alt="BA8ABD6D-812C-441C-9339-57722AD145CE_1_201_a.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1466343/87f24db4-3ca7-251a-1b5c-7a0c48ab007a.jpeg">


# 機能説明

* startボタンを押すと、UIProgressViewで作成したゲージがオレンジ色に変わっていきます。
* ゲージとstartボタンの間のUILabelにゲージの進行状況を表示しています

# コードと簡単解説

* `.progress`は初期値を入れています。0以上1以下の中から決めます　

* `.progressViewStyle`は`.bar`と`defalut`から選択をします。`.bar`を選択した場合、`.backgroundColor`を設定しないと`.progress`に値が入ってから、表示されるような見た目になります。

```Swift:ProgressView
import Foundation
import UIKit

class ProgressView:UIViewController{
    
    let uiprogressView = UIProgressView() //インスタンス作成
    
    func createProgressView(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat, targetView:UIView){
        
        uiprogressView.frame = CGRect(x: x, y: y, width: width, height: height)
        
        uiprogressView.progress = 0
        uiprogressView.progressViewStyle = .bar
        uiprogressView.backgroundColor = .white  //背景色
        uiprogressView.progressTintColor = .systemOrange
        
        targetView.addSubview(uiprogressView)
        
    }
}
```

* 今回は、20秒でProgressViewをいっぱいにします

* for文で1~20が入る`progressCount`を用意します。`DispatchQueue.main.asyncAfter(deadline: .now() + Double(progressCount)) {}`内で、`.setProgress()`を毎秒使用し20秒間`.progress`の値に0.05を足されるようにします。

```Swift:ViewController
import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var progressLabel: UILabel!
    
    let progressView = ProgressView()
    
    var progressLabelCount = Int()
    
    override func viewDidLoad() {
        super.viewDidLoad()
       
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        progressLabel.text = "0"
       
        progressView.createProgressView(x: 20, y: 200, width: self.view.frame.size.width - 40, height: 40, targetView: self.view)
        
    }

    @IBAction func start(_ sender: Any) {
        
        if progressView.uiprogressView.progress == 0{
        
        for progressCount in 1...20{
            
            DispatchQueue.main.asyncAfter(deadline: .now() + Double(progressCount)) {
                
                self.progressView.uiprogressView.setProgress(self.progressView.uiprogressView.progress + 0.05, animated: true)
                
                self.progressLabelCount = self.progressLabelCount + 5
                
                self.progressLabel.text = String(self.progressLabelCount)  
    
            }
            
        }
      
        }else{ //再度、startボタンを押した時とprogressView.uiprogressView.progressの値が0以外の時の処理
            
            progressView.uiprogressView.progress = 0
            self.progressLabel.text = "0"
            self.progressLabelCount = 0
            
            for progressCount in 1...20{
                
                DispatchQueue.main.asyncAfter(deadline: .now() + Double(progressCount)) {
                    
                    self.progressView.uiprogressView.setProgress(self.progressView.uiprogressView.progress + 0.05, animated: true)
                    
                    self.progressLabelCount = self.progressLabelCount + 5
                    
                    self.progressLabel.text = String(self.progressLabelCount)
                    
                }                
            }            
        }        
    }    
}
```

# 終わり
ご指摘や質問はコメントでお受けします。