回答編集履歴

4

honamiさん。

2017/05/22 05:25

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -49,3 +49,37 @@
49
49
  ![秒針](b75da912ea1562a31d64a24b42b1d501.png)
50
50
 
51
51
 
52
+
53
+ # honamiさんの回答をコード化
54
+
55
+
56
+
57
+ 起点をずらす。
58
+
59
+ viewDidLoad()などで一回代入しておけばいいです。
60
+
61
+
62
+
63
+ ```swift
64
+
65
+ secondsImage.layer.anchorPoint = CGPoint(x: 0, y: +1.0)
66
+
67
+ ```
68
+
69
+
70
+
71
+ 回転部分のコードは変更なし。
72
+
73
+
74
+
75
+ ```swift
76
+
77
+ secondsImage.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi * Double(sDeg) / 180.0))
78
+
79
+ ```
80
+
81
+
82
+
83
+ 絵は「真面目に」と同じです。
84
+
85
+

3

修正。

2017/05/22 05:25

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -34,15 +34,11 @@
34
34
 
35
35
  ```swift
36
36
 
37
- let offsety = secondsImage.bounds.height/2;
37
+ let t1 = CGAffineTransformMakeTranslation(0, -secondsImage.bounds.height/2) //起点ずらす
38
38
 
39
- var t = CGAffineTransformMakeTranslation(0, +offsety); //起点をずらして
39
+ let t2 = CGAffineTransformMakeRotation(CGFloat(M_PI * Double(sDeg) / 180.0)) //回転
40
40
 
41
- t = CGAffineTransformRotate(t, CGFloat(M_PI * Double(sDeg) / 180.0)) //回転させて
42
-
43
- t = CGAffineTransformTranslate(t, 0, -offsety); //元に戻す
41
+ secondsImage.transform = CGAffineTransformConcat(t1, t2) //合体!
44
-
45
- secondsImage.transform = t;
46
42
 
47
43
  ```
48
44
 
@@ -53,5 +49,3 @@
53
49
  ![秒針](b75da912ea1562a31d64a24b42b1d501.png)
54
50
 
55
51
 
56
-
57
-

2

真面目に。

2017/05/22 05:19

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -1,4 +1,8 @@
1
+ # 手抜き
2
+
3
+
4
+
1
- 一番簡単なのは下のような画像を用意することです。
5
+ 簡単なのは下のような画像を用意することです。
2
6
 
3
7
  ![秒針](b373ad1ba45a8c3118dc8d105f3d7d16.png)
4
8
 
@@ -19,3 +23,35 @@
19
23
  書いてある通り`Double.pi`を使って下さい。
20
24
 
21
25
 
26
+
27
+ # 真面目に
28
+
29
+
30
+
31
+ 変換するの面倒なのでSwift2.3です。
32
+
33
+
34
+
35
+ ```swift
36
+
37
+ let offsety = secondsImage.bounds.height/2;
38
+
39
+ var t = CGAffineTransformMakeTranslation(0, +offsety); //起点をずらして
40
+
41
+ t = CGAffineTransformRotate(t, CGFloat(M_PI * Double(sDeg) / 180.0)) //回転させて
42
+
43
+ t = CGAffineTransformTranslate(t, 0, -offsety); //元に戻す
44
+
45
+ secondsImage.transform = t;
46
+
47
+ ```
48
+
49
+
50
+
51
+ 絵はこんな感じ。
52
+
53
+ ![秒針](b75da912ea1562a31d64a24b42b1d501.png)
54
+
55
+
56
+
57
+

1

π

2017/05/22 04:57

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -7,3 +7,15 @@
7
7
  赤が秒針で、緑が回転の中心になります。
8
8
 
9
9
  黒い外枠は分かりやすいように付けているだけで、実際には下半分は透明です。
10
+
11
+
12
+
13
+ > 下記のような警告が出てます
14
+
15
+ > 'M_PI' is deprecated: Please use 'Double.pi' or '.pi' to get the value of correct type and avoid casting.
16
+
17
+
18
+
19
+ 書いてある通り`Double.pi`を使って下さい。
20
+
21
+