[Swift]スワイプしたら角度が変わるUIViewを作る その①
導入
ほとんどこの記事の受け売りなんですが
https://qiita.com/cyomox/items/bdb5d86b76b522cc6249
swipeView(青い四角)にaddSwipeGesutureして、Swipeしたら回転するViewを作りました
万能な回転行列
前回の記事では、90°の場合の回転行列を取り上げましたが、
その後の調べで、どの角度でも対応できる回転行列があるそうです。
課題点
現在実装しているコードの課題点としては、
・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
}
}
後編
この記事が気に入ったらサポートをしてみませんか?