#7 App 的解鎖畫面(passcode)

愛麗絲追著兔子先生來到了女王的茶會,撲克牌士兵卻要她輸入邀請函上的通行密碼,該怎麼辦才能進去呢?

Debug流水帳:

(1)passcode pass: performSegue to correct page
起點controller拉線到目的地controller, 線設id, performSegue(“id”)

performSegue(withIdentifier: "correctPasscode", sender: self)

(2)passcode fail: show alert
參考Peter的詳細介紹~

let alert = UIAlertController(title: "通行密碼錯誤", message: "請查看邀請函", preferredStyle: .alert)
let action = UIAlertAction(title: "再試一次", style: .default) { (_) in self.initial() }
alert.addAction(action)
present(alert, animated: true, completion: nil)

(3)delay for show guessImage
(不然第4個guessImage會一閃即逝,繼續執行下一步)

let delaySeconds = 0.2
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delaySeconds) { self.checkPasscode() }

(4)Number button全部拉到同一個IBAction,用sender.tag判斷

(5)guessImage mask, 還沒輸入密碼時,底層顯示圖案的剪影
輸入密碼時把image.isHidden = false
我在這邊卡了好幾個小時…2個重點
1.Don’t addSubView in UIImageView
本來我想直接在UIImageView addSubView & mask
最後改成新增UIView, 在此addSubView & mask當剪影
上層的圖案一樣做在UIImageView,用image.isHidden切換
2.做剪影時addSubView & mask的frame要注意
不是跟UIView一樣(只有寬高一樣), 座標要改為(0,0)
不然圖案會貼在天涯海角…QQ

GitHub:

--

--