#21 小費計算App

目的:學習字串轉數字,optional binding,收鍵盤。

這次的作業比較沒這麼複雜,主要就是練習字串轉數字和熟悉之前比較少用的UI元件,程式碼不多,所以想說讓畫面豐富一點,就做了一點動畫,畫面也沒什麼靈感,在網站上隨便找找素材,不小心弄的太少女😂😂

學習重點

  • 型別轉換,字串轉數字
  • UIStepper運用
  • 透過手勢收起鍵盤
  • CABasicAnimation播放動畫
  • if-else判斷

型別轉換

將TextField裡的文字包入Double() ,代表把文字轉成浮點數,記得要加optional確保裡面的值不是nil

var totalMoney:Double = 0
var people:Double = 0
totalMoney = Double(moneyTextField.text!)!
people = Double(peopleTextField.text!)!

UIStepper

  • Value: 當前的值
  • Minimum: 最小值
  • Maximum: 最大值
  • Step: 一次增加或減少多少值
@IBAction func stepper(_ sender: UIStepper) {
peopleTextField.text = "\(Int(sender.value))"
}

收起鍵盤

透過手勢實現輕觸畫面將鍵盤收起,從元件庫拉Tap Gesture Recognizer元件到ViewController,拉一個IBAction,在裡面輸入view.endEditing(true)

@IBAction func closeKeyboard(_ sender: Any) {
view.endEditing(true)
}

CABasicAnimation播放動畫

CABasicAnimation可以實現多種效果,let animation = CABasicAnimation(keyPath: “opacity”)opacity 為閃爍效果

  • fromValue: 動畫的起始值
  • toValue: 動畫的結束值
  • duration: 動畫持續時間
let animation = CABasicAnimation(keyPath: "opacity")
animation.fromValue = 1
animation.toValue = 0
animation.duration = 3
animateImageView.layer.add(animation, forKey: nil)

結束動畫

將設定動畫的程式碼放進CATransaction.begin()CATransaction.commit() 之間,利用 CATransaction.setCompletionBlock 設定動畫結束時執行的程式

            CATransaction.begin()
CATransaction.setCompletionBlock {
animateImageView.removeFromSuperview()
self.resultLabel.isHidden = false
}
CATransaction.commit()

完整程式碼

Demo

--

--