ホーム

時計の針を回転させて今何分か知る Swift

 

環境

  • Swift
  • Swift3.0
  • Xcode
  • Xcode8
  • UIKit
  • iOS ios10

説明

時計の針に見立てたUIViewをドラッグで回転させ0分〜59分までの時間を算出するアプリです。

実装

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var whattimenow: UILabel!


    var myView: UIView!
    override func viewDidLoad() {
        super.viewDidLoad()
        myView = UIView(frame: CGRect(x: 0, y: 0, width: 20, height: 100))
        myView.center = self.view.center
        myView.backgroundColor = UIColor.red;
        self.view.addSubview(myView)

        myView.layer.anchorPoint = CGPoint(x: 0.5, y: 1.0)

        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 inC = CGPoint(x:view.frame.size.width / 2, y:view.frame.size.height / 2)
            var angle = atan2f(Float(position.y - inC.y), Float(position.x - inC.x)) + Float(Double.pi / 2)



            if(angle < 0){

            angle = angle + Float(2 * Double.pi)

            }else if(angle >= Float(2 * Double.pi) ){

            angle = angle - Float(2 * Double.pi)

            }

//            let HOUR_RADIUS = (Double.pi / 6)
//            let h = (angle / Float(HOUR_RADIUS) ).truncatingRemainder(dividingBy: Float(12))
//            let MIN_HOUR_RADIUS = (HOUR_RADIUS / 60)
//            let m = ((angle - h * HOUR_RADIUS) / MIN_HOUR_RADIUS) % 60



            let MINUTE_RADIUS = (Double.pi / 30)
            let m = (angle / Float(MINUTE_RADIUS) )

            print(m)
            whattimenow.text = String(m)
            myView.transform = CGAffineTransform(rotationAngle: CGFloat(angle))
        }
    }
}

実行

on.gif

参考

GitHub

Pocket
LinkedIn にシェア

  • この記事を書いた人

藤沢瞭介(Ryosuke Hujisawa)

りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

1
2
no image 3
4
5
6
7
8
9
10
no image 11
12
13
14
15
16
17
18
19
20
21
22
23

-ホーム