把第三天的方塊改成可以順時針以及逆時針旋轉,
我先宣告一個變數記錄現在位置,用以推斷下個要走的位置
//起始為0
var loc=0
先加入兩個按紐,
@IBAction func clockwise(_ sender: UIButton) { }
@IBAction func counterclockwise(_ sender: UIButton) { }
現在執行完畢之後畫面:
接下來填寫內容,
//順時針按鈕
@IBAction func clockwise(_ sender: UIButton) {
//loc是現在位置,在我們進來順時針時,要先+1,讓他知道下一個位置
if(loc<3){
self.loc+=1
}else{
self.loc=0
}
turnRight(one, two, three, four)
}
//逆時針按鈕
@IBAction func counterclockwise(_ sender: UIButton) {
if(loc<0){
self.loc=3
}else{
self.loc-=1
}
turnRight(one, two, three, four)
}
//我原本沒有想要做逆時針,就取名叫右轉,現在懶得改回去
//順序是以右轉(順時針)來看
func turnRight( _ a:UILabel , _ b:UILabel, _ c:UILabel, _ d:UILabel) {
UIView.animate(withDuration: 0.9, delay: 0.1, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.5, animations: {
//初始位置0,如上面的大圖
//順時針轉動一格,變為1,以此類推
switch self.loc{
case 0:
a.transform = CGAffineTransform(translationX: 0, y: 0)
b.transform = CGAffineTransform(translationX: 0, y: 0)
c.transform = CGAffineTransform(translationX: 0, y: 0)
d.transform = CGAffineTransform(translationX: 0, y: 0)
case 1:
a.transform = CGAffineTransform(translationX: 40, y: 0)
b.transform = CGAffineTransform(translationX: 0, y: -40)
c.transform = CGAffineTransform(translationX: -40, y: 0)
d.transform = CGAffineTransform(translationX: 0, y: 40)
case 2:
a.transform = CGAffineTransform(translationX: 40, y: 40)
b.transform = CGAffineTransform(translationX: 40, y: -40)
c.transform = CGAffineTransform(translationX: -40, y: -40)
d.transform = CGAffineTransform(translationX: -40, y: 40)
default:
a.transform = CGAffineTransform(translationX: 0, y: 40)
b.transform = CGAffineTransform(translationX: 40, y: 0)
c.transform = CGAffineTransform(translationX: 0, y: -40)
d.transform = CGAffineTransform(translationX: -40, y: 0)
}
}, completion: nil)
}
兩天的成果:
2016/11/1
這種移動方法一對的位置都是以原點來算!!
例如:
a.transform = CGAffineTransform(translationX: 0, y: 40)
a.transform = CGAffineTransform(translationX: 0, y: 20)
移動了兩次後,只會從最一開始的地方(x:0, y:0)往 y+20移過去
也就是說,會看到他的 y 變化:0 -> 40 -> 20
而不是一直往下移動
0 意見:
張貼留言