前提・実現したいこと
環境はXcode9.4.1 Swift4.0です。
1ずつ動かして止めることはできますが、浮動小数点の誤差によって、0.1ずつだとうまく止められません。
対応方法を教えてもらえると助かります・・・。
そもそもアプリを作ってみたいだけなので、このコードを直したものでなくても大丈夫です!
発生している問題・エラーメッセージ
0.1ずつ動かすと0で止まらない。
そもそも0.1ずつ表記が動かず、1ずつ数字が減っていってしまう。
該当のソースコード
Swift4.0
1import UIKit 2 3class ViewController: UIViewController { 4 @IBOutlet weak var countLabel: UILabel! 5 @IBOutlet weak var gameOver: UILabel! 6 @IBOutlet weak var backImage: UIImageView! 7 //時間計測用の変数 8 var count : Float = 10 9 10 //タイマー 11 var timer:Timer! 12 13 14 override func viewDidLoad() { 15 16 super.viewDidLoad() 17 gameOver.isHidden = true 18 backImage.isHidden = true 19 20 // Do any additional setup after loading the view, typically from a nib. 21 22 } 23 24 override func didReceiveMemoryWarning() { 25 super.didReceiveMemoryWarning() 26 // Dispose of any resources that can be recreated. 27 } 28 29 //タイマー起動のための中身 30 @objc func onUpdate(timer:Timer){ 31 32 //カウント増減を実施 33 count -= 1 34 35 //桁数を指定するコード 36 let str = String(format: "%.0f",count) 37 38 //countlabelに表示するコード 39 countLabel.text = str 40 41 //countlabelが0になったらタイマーを止めてgameoverが表示されるようにする 42 if count == 0 { 43 44 timer.invalidate() 45 gameOver.isHidden = false 46 self.view.sendSubview(toBack: backImage) 47 backImage.isHidden = false 48 49 } 50 51 } 52 53 54 @IBAction func startButton(_ sender: Any) { 55 56 timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.onUpdate(timer:)), userInfo: nil, repeats: true) 57 58 } 59 60 61} 62 63
試したこと
if count == 0を、
if count <= 0にしてみたが、止まる時の表記が-0になってしまう。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/16 05:30