見出し画像

簡単なルーレットアプリ作ってみた

覚えておけば応用して使えるので備忘用に残します。

○完成形

画像5

手順1

テキトーにプロジェクトを作成(今回はRouletteAppと命名)

画像1


手順2

プロジェクトが開いたらまずはStoryboardで見た目を作ります。

画像のように、Label , imageView , Buttonをそれぞれ配置してください


画像2


手順3

画像ファイルを3枚プロジェクトに入れる(好きな画像で大丈夫です)

*JPEGだと画像が表示されないのでPNG画像を入れてください

画像4


手順4

パーツをそれぞれプログラムと紐づける(画像参照)

ラベル →     @IBOutlet weak var rouletteLabel: UILabel!
イメージ →  @IBOutlet weak var rouletteImage: UIImageView!
ボタン →     @IBOutlet weak var rouletteButton: UIButton!と
       @IBAction func rouletteAction(_ sender: Any) {
                       }

画像4


手順5

以下コードを記述 *(imageNameArray内の名前はそれぞれの画像ファイル名にしておいてください)

◉コードの解説は割愛します🙏

ex: "baseball.png" なら imageNameArray = ["baseball", ~]

import UIKit
class ViewController: UIViewController {
   
   @IBOutlet weak var rouletteLabel: UILabel!
   @IBOutlet weak var rouletteImage: UIImageView!
   @IBOutlet weak var rouletteButton: UIButton!
   
   private var timer: Timer!
   private var changeImageNo = 0
   private let imageNameArray = ["smile","cry","surprised"]
   
   override func viewDidLoad() {
       super.viewDidLoad()
       setupView()
   }
   
   private func setupView() {
       rouletteButton.layer.cornerRadius = 20.0
       rouletteImage.image = UIImage(named: imageNameArray[0])
   }
   
   private func displayImage() {
       let name = imageNameArray[changeImageNo]
       let image = UIImage(named: name)
       rouletteImage.image = image
   }
   
   @objc func updateTimer(_ timer: Timer){
       changeImageNo += 1
       if changeImageNo > 2{
           changeImageNo = 0
       }
       displayImage()
   }
   
   @IBAction func rouletteAction(_ sender: Any) {
       if timer == nil{
           timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(updateTimer(_:)), userInfo: nil, repeats: true)
           rouletteButton.setTitle("ストップ", for: .normal)
           rouletteLabel.text = "再生中です"
       }else{
           timer.invalidate()
           timer = nil
           rouletteButton.setTitle("再生", for: .normal)
           rouletteLabel.text = "ルーレット停止しました"
       }
   }
   
}


ここまで出来たらビルドをして正常に動くかテストしてみてください


以上です




いいなと思ったら応援しよう!