#7使用 IBOutlet,IBAction & 亂數創作-NBA3on3配對隊友鬥牛

不得不說作業越來越難了,也有可能是我越級打怪吧!
這個作業做了快一個禮拜才勉強完成QQ

以下為作業基本要求

1 使用 IBOutlet 和 IBAction 實現 App 的功能。

2 畫面上至少需包含以下元件,而且程式也有使用這些元件。

text field,slider,switch,label,image view,button,segmented control,date picker

3 slider 滑動時要搭配 label 顯示數值

4 使用者輸入文字後,可以將鍵盤收起來,比方按某個 button 或 return 鍵。

5 有亂數功能。

6 利用 UIBezierPath 設計特別形狀的圖片

7 覺得畫面太小的,可考慮做 iPad 的版本。

8 有趣。

設想配對二位NBA隊友:
1. 輸入隊名(text field)
2.選擇隊伍成立日期(date picker)
3.可以隨機選擇二位隊友(button, image view);
4.也可以設立條件選擇分別選擇隊友。例如:聯盟選項(segmented control)、爆發力(switch)
5.最後調整球隊成立年數(slider)並顯示於介面(label)

二張球員圖片的部分,有利用了UIBezierPath 設計特別形狀的圖片。

import UIKitclass SharpImageView: UIImageView {override func layoutSubviews() {
super.layoutSubviews()
let path = UIBezierPath()
path.move(to: CGPoint.zero)
path.addLine(to: CGPoint(x: bounds.width, y: 0))
path.addLine(to: CGPoint(x: bounds.width, y: bounds.height * 0.9))
path.addLine(to: CGPoint(x: 0, y: bounds.height))
path.close()
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
layer.mask = shapeLayer
}
}

因為是二張所以新增二個 File 選 Cocoa Touch Class

import UIKitclass SharpImageview2: UIImageView {override func layoutSubviews() {
super.layoutSubviews()
let path = UIBezierPath()
path.move(to: CGPoint.zero)
path.addLine(to: CGPoint(x: bounds.width, y: 0))
path.addLine(to: CGPoint(x: bounds.width, y: bounds.height))
path.addLine(to: CGPoint(x: 0, y: bounds.height * 0.9))
path.close()
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
layer.mask = shapeLayer
}
}

這個app至少還有二處待解決,第一個是選擇隊友有可能會選到同一人,要解決亂數後避免選到出現過後的值。另一個是text field、slider、datepicker沒有實質作用,需要搭配傳資料至下一頁,讓app完整性再高一些。

參考資料&GitHub

--

--