output練習の第2回目です。
今回も講義で作ったアプリに、少し改良してみました。
講義では、imageViewの画像をタイマーのように回す「timerアプリ」を作成しました。
この講義で重要なのが、『for in 文』の基礎を覚える事です。
アプリ自体は、とても簡素でコードも短いです。
このアプリに、簡単な変更を加えてみました。
具体的には、timerで回す物を3つにして見ました。
講義では、画像だけでした。
しかし、「timer」と言えば、やはり数字だと思いまして、『Int』でやって見ました。
そこに、文字でもやって見ようと思い『String』も追加して見ました。
それと、リセット出来たらという事で、ボタンに『Reset』ボタンを追加しました。
あと、前回の時は『if文』に、直接実行文を記入しました。
纏めると、timerで回す対象を『int,string』を追加し、ボタンに『reset』を追加しました。
今回は、outputのLevel2なので、こんなところですかね。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var stringLabel: UILabel!
@IBOutlet weak var intLabel: UILabel!
@IBOutlet weak var startButton: UIButton!
@IBOutlet weak var stopButton: UIButton!
var timer = Timer()
var count = 0
var stringCount = 0
var intCount = 0
var imageArray = [UIImage]()
var stringArray = ["Swift","kotolin","HTML","CSS","JS"]
override func viewDidLoad() {
super.viewDidLoad()
stopButton.isEnabled = false
count = 0
for count in 0..<5{
print(count)
let image = UIImage(named: "\(count)")
imageArray.append(image!)
}
imageView.image = UIImage(named: "0")
stringCount = 0
for stringCount in 0..<4{
print(stringCount)
}
stringLabel.text = String(stringArray[0])
intCount = 0
for intCount in 0..<5{
print(intCount)
}
intLabel.text = String(intCount)
}
func startTimer(){
timer = Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(timerUpDate), userInfo: nil, repeats: true)
}
@objc func timerUpDate() {
count = count + 1
if count > 4 {
count = 0
}
imageView.image = imageArray[count]
stringCount = stringCount + 1
if stringCount > 4 {
stringCount = 0
}
stringLabel.text = String(stringArray[stringCount])
intCount = intCount + 1
if intCount > 4 {
intCount = 0
}
intLabel.text = String(intCount)
}
@IBAction func start(_ sender: Any) {
startTimer()
startButton.isEnabled = false
stopButton.isEnabled = true
}
@IBAction func stop(_ sender: Any) {
startButton.isEnabled = true
stopButton.isEnabled = false
timer.invalidate()
}
@IBAction func reset(_ sender: Any) {
count = 0
imageView.image = UIImage(named: "0")
stringCount = 0
stringLabel.text = String(stringArray[0])
intCount = 0
intLabel.text = String(intCount)
}
}