Storyboard
画像は好きなものを3枚テキトーに入れておく
コーディング
import UIKit
class HomeViewController: UIViewController {
// MARK: - Properties
@IBOutlet private weak var rouletteLabel: UILabel!
@IBOutlet private weak var rouletteImageView: UIImageView!
@IBOutlet private weak var rouletteButton: UIButton!
private var timer: Timer!
private var changeImageNo = 0
private let imageNameArray = ["smile", "cry", "surprised"]
// MARK: - View Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
setupView()
}
// ボタンを角丸にする & デフォルトで表示する画像を入れる
private func setupView() {
rouletteButton.layer.cornerRadius = 12
rouletteImageView.image = UIImage(named: imageNameArray[0])
}
// 画像表示
private func displayImage() {
let imageName = imageNameArray[changeImageNo]
rouletteImageView.image = UIImage(named: imageName)
}
// 0.1秒毎にchangeImageNoをインクリメントして表示する画像を変える
@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 = "ルーレット停止しました"
}
}
}