見出し画像

[Swift]スワイプしたら角度が変わるUIViewを作る その①

導入


ほとんどこの記事の受け売りなんですが
https://qiita.com/cyomox/items/bdb5d86b76b522cc6249

swipeView(青い四角)にaddSwipeGesutureして、Swipeしたら回転するViewを作りました

万能な回転行列

前回の記事では、90°の場合の回転行列を取り上げましたが、
その後の調べで、どの角度でも対応できる回転行列があるそうです。

a=任意の角度

課題点

現在実装しているコードの課題点としては、
・1度しかスワイプできない
・40°しか回転できない(スワイプの距離or速度で動きが変わるようにしない)
・animateしない

という課題があり、今後も実装を続けていきます。

実装に使ったコード

以下、実装に使ったコードです。
GitHubのアカウントの準備が整ったら、そちらにも上げる予定です。

import UIKit

class SpinnerViewController: UIViewController {
    
    @IBOutlet var spinnerView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(SpinnerViewController.swipeUpAction(_ :)))
        self.spinnerView.addGestureRecognizer(swipeGesture)
    }
    
    @objc func swipeUpAction(_ sender: UISwipeGestureRecognizer){
    
        let angle: CGFloat = 40.0
        
        let radian = (angle * (CGFloat.pi / 180))

        let affineSin = sin(radian)
        let affineCos = cos(radian)

        let affine = CGAffineTransform(a: affineCos,
                                       b: affineSin,
                                       c: -affineSin,
                                       d: affineCos,
                                       tx: 0,
                                       ty: 0)

        spinnerView.transform = affine
    }
    
}

後編


https://note.com/simd_float4x4/n/nc0b426999c89

この記事が気に入ったらサポートをしてみませんか?