下記のgifアニメは時計の秒針です。これを、ドラックで回転させたいと思っています。不思議なことは、画面をタップしてドラッグを始めるところです。今、時計の秒針はちょうど「0時」の部分を指していますが、この部分をタップして回転させて見ると、必ずプラス90度進んだ場所でドラッグが始まってしまいます。
しかし、タップする場所を時計の秒針の9時の部分を選択すると、正確にドラッグが始まります。要は、ドラッグ開始位置が必ず時計の針で言うと「9時」の部分を指してしまいます。これを、時計の針が0時の部分からドラッグを初めても正確に回転するようにしたいです
実行動画
0時部分を選択しながらドラッグすると狂い、9時の部分を選択したままドラッグすると正確に回転する
実装コード
swift
1 2import UIKit 3 4class ViewController: UIViewController { 5 6 7 let ClockBackImage = UIImageView() 8 9 override func viewDidLoad() { 10 11 // Screen Size の取得 12 let screenWidth:CGFloat = view.frame.size.width 13 let screenHeight:CGFloat = view.frame.size.height 14 15 16 //CGAffineTransform(rotationAngle: CGFloat((30.0 * M_PI) / 180.0)) 17 18 19 ClockBackImage.image = UIImage(named: "hour") 20 ClockBackImage.frame = CGRect(x:0, y:0, width:250, height:250) 21 ClockBackImage.center = CGPoint(x:screenWidth/2, y:screenHeight/2) 22 self.view.addSubview(ClockBackImage) 23 24 } 25 26 override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent!) { 27 28 let touch = touches.first! 29 30 let position = touch.location(in: self.view) 31 let target = self.view.center 32 let angle = atan2(target.y-position.y, target.x-position.x) 33 ClockBackImage.transform = CGAffineTransform(rotationAngle: angle) 34 35 } 36} 37

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/04 06:49
2017/06/04 06:49
2017/06/04 07:05 編集
2017/06/04 10:37
2017/06/04 10:55
2017/06/05 01:17
2017/06/05 01:42
2017/06/05 05:42
2017/06/05 05:46