Swift3에서 9시를 기점으로 시계를 드래그로 회전시킨다
atan2(target.y-position.y, target.x-position.x)
이 부분입니다. atan2
에서 좌표에서 각도를 계산합니다.구현
var myView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
myView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
myView.center = self.view.center
myView.backgroundColor = UIColor.red; self.view.addSubview(myView)
myView.layer.anchorPoint = CGPoint(x: 1.0, y: 0.5)
let box = UIView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
box.backgroundColor = UIColor.blue
myView.addSubview(box)
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent!) {
let touch = touches.first!
if touch.view === myView.subviews[0] {
let position = touch.location(in: self.view)
let target = myView.center
let angle = atan2(target.y-position.y, target.x-position.x)
myView.transform = CGAffineTransform(rotationAngle: angle)
}
설명
UIView 인스턴스화
var myView: UIView!
UIView의 실태를 만들어 그리기
//横幅100の縦幅20のUIView
myView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 20)) //viewの真ん中に配置する
myView.center = self.view.center
//UIViewの全体の背景色を赤色に指定する
myView.backgroundColor = UIColor.red;
//画面に描画する
self.view.addSubview(myView)
//anchorPointに関して下記参照
//要は(x: 1.0, y: 0.5)にすることで
//UIViewの最下部を原点に回転させることができる
//これを(x: 0.5, y: 0.5)とかにするとブーメランみたいに回ってしまう
myView.layer.anchorPoint = CGPoint(x: 1.0, y: 0.5)
//青い部分
let box = UIView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
box.backgroundColor = UIColor.blue
myView.addSubview(box)
드래그 처리 구현
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent!) {
//タッチイベント取得
let touch = touches.first!
//青い部分をタッチしたときだけ回転させることができる
if touch.view === myView.subviews[0] {
//自分の場所を取得して
let position = touch.location(in: self.view)
//真ん中を取得して
let target = myView.center
//中心点から自分xと自分yを引き算
let angle = atan2(target.y-position.y, target.x-position.x)
//transformで回転処理を実行する
myView.transform = CGAffineTransform(rotationAngle: angle)
}
참고
anchorPoint에 관해서는 아래 참조
How to rotate an UIImageView using TouchesMoved
Swift3에서 시계를 돌리도록 드래그하여 빙글빙글 회전시켜 본다
Reference
이 문제에 관하여(Swift3에서 9시를 기점으로 시계를 드래그로 회전시킨다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rh_/items/f460a565a300d65a36a5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var myView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
myView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
myView.center = self.view.center
myView.backgroundColor = UIColor.red; self.view.addSubview(myView)
myView.layer.anchorPoint = CGPoint(x: 1.0, y: 0.5)
let box = UIView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
box.backgroundColor = UIColor.blue
myView.addSubview(box)
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent!) {
let touch = touches.first!
if touch.view === myView.subviews[0] {
let position = touch.location(in: self.view)
let target = myView.center
let angle = atan2(target.y-position.y, target.x-position.x)
myView.transform = CGAffineTransform(rotationAngle: angle)
}
UIView 인스턴스화
var myView: UIView!
UIView의 실태를 만들어 그리기
//横幅100の縦幅20のUIView
myView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 20)) //viewの真ん中に配置する
myView.center = self.view.center
//UIViewの全体の背景色を赤色に指定する
myView.backgroundColor = UIColor.red;
//画面に描画する
self.view.addSubview(myView)
//anchorPointに関して下記参照
//要は(x: 1.0, y: 0.5)にすることで
//UIViewの最下部を原点に回転させることができる
//これを(x: 0.5, y: 0.5)とかにするとブーメランみたいに回ってしまう
myView.layer.anchorPoint = CGPoint(x: 1.0, y: 0.5)
//青い部分
let box = UIView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
box.backgroundColor = UIColor.blue
myView.addSubview(box)
드래그 처리 구현
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent!) {
//タッチイベント取得
let touch = touches.first!
//青い部分をタッチしたときだけ回転させることができる
if touch.view === myView.subviews[0] {
//自分の場所を取得して
let position = touch.location(in: self.view)
//真ん中を取得して
let target = myView.center
//中心点から自分xと自分yを引き算
let angle = atan2(target.y-position.y, target.x-position.x)
//transformで回転処理を実行する
myView.transform = CGAffineTransform(rotationAngle: angle)
}
참고
anchorPoint에 관해서는 아래 참조
How to rotate an UIImageView using TouchesMoved
Swift3에서 시계를 돌리도록 드래그하여 빙글빙글 회전시켜 본다
Reference
이 문제에 관하여(Swift3에서 9시를 기점으로 시계를 드래그로 회전시킨다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rh_/items/f460a565a300d65a36a5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Swift3에서 9시를 기점으로 시계를 드래그로 회전시킨다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rh_/items/f460a565a300d65a36a5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)