回答編集履歴
4
honamiさん。
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
修正。
test
CHANGED
@@ -34,15 +34,11 @@
|
|
34
34
|
|
35
35
|
```swift
|
36
36
|
|
37
|
-
let
|
37
|
+
let t1 = CGAffineTransformMakeTranslation(0, -secondsImage.bounds.height/2) //起点ずらす
|
38
38
|
|
39
|
-
|
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 = CGAffineTransform
|
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
真面目に。
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
π
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
|
+
|