2016年12月15日 星期四

[IOS] 自訂生成按鈕(CustomButton)


範例是在書上看到的,不過程式碼我有改過,因為Swift 3 出來了,而市面書上的範例程式碼... 你懂的

這篇主要是講後端生成程式碼 以Button為例

  1. yourButtonName.addTarget(self, action:#selector(functionName(sender:)), for: .touchUpInside)
  2. fun functionName(sender:UIButton) {
  3. //....
  4. }

action 這邊 如果沒有回傳值 (sender:) 就不用加了


View 的截圖 自訂12個按鈕


Controller全部程式碼

  1. class ViewController: UIViewController {
  2.  
  3. @IBOutlet weak var labelTel: UITextField!
  4. @IBOutlet weak var labelMsg: UILabel!
  5. override func viewDidLoad() {
  6. super.viewDidLoad()
  7. for i in 0...11 {
  8. let x:Int = 100 + (i % 4) * 60
  9. let y:Int = 140 + (i / 4) * 60
  10. let buttonNumber:UIButton = UIButton(type: UIButtonType.system) as UIButton
  11. //按鈕位置 大小
  12. buttonNumber.frame = CGRect(x: x,y: y,width: 40, height: 35)
  13. //文字顏色
  14. buttonNumber.setTitleColor(UIColor.white, for: UIControlState.normal)
  15. //按鈕背景
  16. buttonNumber.backgroundColor = UIColor.black
  17. //字型大小
  18. buttonNumber.titleLabel?.font = UIFont(name: "System", size: 22.0)
  19. if i == 10 {
  20. buttonNumber.setTitle("X", for: UIControlState.normal)
  21. //加入事件 #selector(funcName(sender:)) 函數是有參數的
  22. buttonNumber.addTarget(self, action:#selector(clearClick(sender:)), for: .touchUpInside)
  23. } else if i == 11 {
  24. buttonNumber.setTitle("OK", for: UIControlState.normal)
  25. buttonNumber.addTarget(self, action:#selector(sureClick(sender:)), for: UIControlEvents.touchUpInside)
  26. }else {
  27. buttonNumber.setTitle("\(i)", for: UIControlState.normal)
  28. buttonNumber.addTarget(self, action:#selector(numberClick(sender:)), for: UIControlEvents.touchUpInside)
  29. }
  30. //加入按鈕
  31. view.addSubview(buttonNumber)
  32. }
  33. }
  34.  
  35. func sureClick(sender:UIButton) {
  36. if labelTel.text?.lengthOfBytes(using: String.Encoding.utf8) == 10 {
  37. labelMsg.text = "Call " + labelTel.text!
  38. } else if labelTel.text == "" {
  39. labelMsg.text = "Please enter your phone number."
  40. } else if (labelTel.text?.lengthOfBytes(using: String.Encoding.utf8))! > 10{
  41. labelMsg.text = "Error"
  42. }
  43. }
  44. func clearClick(sender:UIButton){
  45. labelTel.text = ""
  46. labelMsg.text = ""
  47. }
  48. func numberClick(sender:UIButton) {
  49. labelTel.text = labelTel.text! + sender.currentTitle!
  50. }
  51. override func didReceiveMemoryWarning() {
  52. super.didReceiveMemoryWarning()
  53. // Dispose of any resources that can be recreated.
  54. }
  55.  
  56.  
  57. }

沒有留言:

張貼留言