teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

honamiさん。

2017/05/22 05:25

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -23,3 +23,20 @@
23
23
 
24
24
  絵はこんな感じ。
25
25
  ![秒針](b75da912ea1562a31d64a24b42b1d501.png)
26
+
27
+ # honamiさんの回答をコード化
28
+
29
+ 起点をずらす。
30
+ viewDidLoad()などで一回代入しておけばいいです。
31
+
32
+ ```swift
33
+ secondsImage.layer.anchorPoint = CGPoint(x: 0, y: +1.0)
34
+ ```
35
+
36
+ 回転部分のコードは変更なし。
37
+
38
+ ```swift
39
+ secondsImage.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi * Double(sDeg) / 180.0))
40
+ ```
41
+
42
+ 絵は「真面目に」と同じです。

3

修正。

2017/05/22 05:25

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -16,13 +16,10 @@
16
16
  変換するの面倒なのでSwift2.3です。
17
17
 
18
18
  ```swift
19
- let offsety = secondsImage.bounds.height/2;
20
- var t = CGAffineTransformMakeTranslation(0, +offsety); //起点ずらして
19
+ let t1 = CGAffineTransformMakeTranslation(0, -secondsImage.bounds.height/2) //起点ずら
21
- t = CGAffineTransformRotate(t, CGFloat(M_PI * Double(sDeg) / 180.0)) //回転させて
20
+ let t2 = CGAffineTransformMakeRotation(CGFloat(M_PI * Double(sDeg) / 180.0)) //回転
22
- t = CGAffineTransformTranslate(t, 0, -offsety); //元に戻す
21
+ secondsImage.transform = CGAffineTransformConcat(t1, t2) //合体!
23
- secondsImage.transform = t;
24
22
  ```
25
23
 
26
24
  絵はこんな感じ。
27
25
  ![秒針](b75da912ea1562a31d64a24b42b1d501.png)
28
-

2

真面目に。

2017/05/22 05:19

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -1,4 +1,6 @@
1
+ # 手抜き
2
+
1
- 一番簡単なのは下のような画像を用意することです。
3
+ 簡単なのは下のような画像を用意することです。
2
4
  ![秒針](b373ad1ba45a8c3118dc8d105f3d7d16.png)
3
5
 
4
6
  赤が秒針で、緑が回転の中心になります。
@@ -8,3 +10,19 @@
8
10
  > 'M_PI' is deprecated: Please use 'Double.pi' or '.pi' to get the value of correct type and avoid casting.
9
11
 
10
12
  書いてある通り`Double.pi`を使って下さい。
13
+
14
+ # 真面目に
15
+
16
+ 変換するの面倒なのでSwift2.3です。
17
+
18
+ ```swift
19
+ let offsety = secondsImage.bounds.height/2;
20
+ var t = CGAffineTransformMakeTranslation(0, +offsety); //起点をずらして
21
+ t = CGAffineTransformRotate(t, CGFloat(M_PI * Double(sDeg) / 180.0)) //回転させて
22
+ t = CGAffineTransformTranslate(t, 0, -offsety); //元に戻す
23
+ secondsImage.transform = t;
24
+ ```
25
+
26
+ 絵はこんな感じ。
27
+ ![秒針](b75da912ea1562a31d64a24b42b1d501.png)
28
+

1

π

2017/05/22 04:57

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -2,4 +2,9 @@
2
2
  ![秒針](b373ad1ba45a8c3118dc8d105f3d7d16.png)
3
3
 
4
4
  赤が秒針で、緑が回転の中心になります。
5
- 黒い外枠は分かりやすいように付けているだけで、実際には下半分は透明です。
5
+ 黒い外枠は分かりやすいように付けているだけで、実際には下半分は透明です。
6
+
7
+ > 下記のような警告が出てます
8
+ > 'M_PI' is deprecated: Please use 'Double.pi' or '.pi' to get the value of correct type and avoid casting.
9
+
10
+ 書いてある通り`Double.pi`を使って下さい。