質問編集履歴
21
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -128,7 +128,7 @@
|
|
128
128
|
let prg = (realRotationAngle - startAngle)/(-1 * (startAngle + abs(endAngle)))
|
129
129
|
value = prg <= 0.5 ? max(0,prg) : min(1,prg)
|
130
130
|
```
|
131
|
-
**8/24**
|
131
|
+
**8/24 現状・メモ**
|
132
132
|
```ここに言語を入力
|
133
133
|
タッチした回数が初回だった場合
|
134
134
|
if let touch = touches[touches.startIndex] as? UITouch {
|
@@ -165,4 +165,15 @@
|
|
165
165
|
|
166
166
|
value = prg <= 0.5 ? max(0,prg) : min(1,prg)
|
167
167
|
}
|
168
|
-
```
|
168
|
+
```
|
169
|
+
|
170
|
+
〜〜自分用メモ〜〜
|
171
|
+
**円の右を 0 として基準となり、360°周回すると 2π となる**
|
172
|
+

|
173
|
+
|
174
|
+
|
175
|
+
**逆正弦atan2(アークタンジェント2)**
|
176
|
+
> atan2は点(x, y)とx軸によって表されるベクトルの角度(θ)を返します。
|
177
|
+
> よって位置から角度を求めることができます。
|
178
|
+
|
179
|
+
参考:[2つの座標から角度や距離を求める](https://qiita.com/arthur87/items/23d3c896dafbc8223fd5)
|
20
追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
swift3で書かれた[github](https://github.com/ispiropoulos/PRGRoundSlider)を参考にしております。
|
2
|
+
|
1
3
|
**やりたいこと:以下の青い「Single Slider」を「左下と右下に位置する始点(0%)と終点(100%)」を、「始点(0%)を左上、終点(100%)を右上」に設置し、スライダーのつまみを真ん中の円の下側を潜るように反時計回りに半周して終わるように変更を加えたい。(そっくりそのまま逆さまの状態に)**
|
2
4
|
|
3
5
|

|
@@ -28,7 +30,7 @@
|
|
28
30
|
// 中心点
|
29
31
|
context.translateBy(x: 45, y: 46) //45
|
30
32
|
// 回転する
|
31
|
-
context.rotate(by: -selectionAngle * CGFloat.pi/180)
|
33
|
+
context.rotate(by: -selectionAngle * CGFloat.pi/180)
|
32
34
|
|
33
35
|
let selectionThumbPath = UIBezierPath(ovalIn: CGRect(x: 36.3, y: -4.13, width: 8, height: 8))
|
34
36
|
thumbColor.setFill()
|
@@ -36,8 +38,15 @@
|
|
36
38
|
//最近保存された状態に設定
|
37
39
|
context.restoreGState()
|
38
40
|
```
|
41
|
+
**やったこと②**
|
42
|
+
以下の部分にて、selectionAngleからマイナスをなくし、CGFloat.pi/180を150にしたところ
|
43
|
+
> context.rotate(by: **-**selectionAngle * CGFloat.pi/**180**)
|
44
|
+
↓
|
45
|
+
> context.rotate(by: selectionAngle * CGFloat.pi/**105**)
|
46
|
+

|
47
|
+
少しだけ理想的な動きになりましたが、スライダーの操作がスライダーとシンクロしなくなってしまった。
|
39
48
|
|
40
|
-
|
49
|
+
|
41
50
|
文字数の制限で全て載せられないのですが、メインのファイルは以下です。
|
42
51
|
```ViewController
|
43
52
|
import UIKit
|
19
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
**以下の青い「Single Slider」を「左下と右下に位置する始点(0%)と終点(100%)」を、「始点(0%)を左上、終点(100%)を右上」に設置し、スライダーのつまみを真ん中の円の下側を潜るように反時計回りに半周して終わるように変更を加えたい。(そっくりそのまま逆さまの状態に)**
|
1
|
+
**やりたいこと:以下の青い「Single Slider」を「左下と右下に位置する始点(0%)と終点(100%)」を、「始点(0%)を左上、終点(100%)を右上」に設置し、スライダーのつまみを真ん中の円の下側を潜るように反時計回りに半周して終わるように変更を加えたい。(そっくりそのまま逆さまの状態に)**
|
2
2
|
|
3
3
|

|
4
4
|
|
18
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|

|
4
4
|
|
5
|
-
**や
|
5
|
+
**やったこと**
|
6
|
+
始点と終点をstartAngleとendAngleを210と-30から130と50に変更することで、左上と右上に移動させて円弧の描写をclockwise: falseで反転させることに成功。そこから先のスライダーの動きに関してどうやったら反時計回りでかつ0%から100%に辿り着けるようになるかまだ、解決策を考えている。
|
6
|
-

|
8
|
+
動きに関しては0%からはうまく始まるが、スライダーのつまみが100%の終点を超えて180度近く、先のところまで可動してしまう。円弧の計算の仕組みが難しいため、わかるまで苦戦中です。
|
7
9
|
|
8
|
-
**現時点での理解は、UIBezierPathのclockwiseをflaseにすることで半時計周りにすることはできたが、始点と終点、スライダーのつまみの動きがどのように動作しているのか分からない状態です。**
|
9
|
-
|
10
10
|
```SliderKit
|
11
11
|
clockwiseをtrueだと時計回り, falseだと反時計回り
|
12
12
|
// UIBezierPathのインスタンス生成
|
@@ -77,15 +77,9 @@
|
|
77
77
|
}
|
78
78
|
```
|
79
79
|
|
80
|
-
**追記(現状):8/22 23:00**
|
81
|
-
始点と終点をstartAngleとendAngleを210/-30から130と50に変更することで、左上と右上に移動させて円弧の描写をclockwise: falseで反転させることに成功。そこから先のスライダーの動きに関してどうやったら反時計回りでかつ0%から100%に辿り着けるようになるかまだ、解決策を考えている。
|
82
|
-

|
83
|
-
動きに関しては0%からはうまく始まるが、スライダーのつまみが100%の終点を超えて180度近く、先のところまで可動してしまう。
|
84
|
-
円弧の計算の仕組みが難しいため、わかるまで苦戦中です。
|
85
|
-
おそらく「CGFloat.pi/180」の角度の設定に問題がある。ここら辺の動作に関する円弧の仕組みがわかれば、
|
86
|
-
反転させた円弧でもうまく動くと考えている。
|
87
|
-

|
88
80
|
|
81
|
+
|
82
|
+
|
89
83
|
**追記:8/23 12:00**
|
90
84
|
スライダーの動きの範囲に関しては、PRGRounderSlider.swiftのここの部分で変更できる可能性があるのでどうやって動いているかじっくり試行錯誤で変更を試している状況です。
|
91
85
|
```PRGRounderSlider
|
17
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -131,6 +131,7 @@
|
|
131
131
|
if let touch = touches[touches.startIndex] as? UITouch {
|
132
132
|
rotationにrotationForLocationの座標を渡す
|
133
133
|
let rotation = rotationForLocation(touch.location(in: self))
|
134
|
+
・・・続く
|
134
135
|
```
|
135
136
|
|
136
137
|
> 上のコードの引数:**rotationForLocation**(touch.location(in: self))について
|
@@ -145,6 +146,7 @@
|
|
145
146
|
|
146
147
|
|
147
148
|
```ここに言語を入力
|
149
|
+
・・・続き
|
148
150
|
// convert rad to angles
|
149
151
|
var realRotationAngle = -(rotation * 180 / CGFloat(Double.pi))
|
150
152
|
|
16
修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
Swift4 円弧状のスライダーのつまみの動き(時計回り)と角度を反転させたい
|
body
CHANGED
File without changes
|
15
修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
sゆうsSwift4 円弧状のスライダーのつまみの動き(時計回り)と角度を反転させたい
|
body
CHANGED
@@ -119,7 +119,7 @@
|
|
119
119
|
}
|
120
120
|
```
|
121
121
|
**8/23 15:40
|
122
|
-
質問:やはり上のコード部分(func updateRotationWithTouches)の仕組みが理解できません。
|
122
|
+
質問:やはり上のコード部分(func updateRotationWithTouches)の仕組みが理解できません。**
|
123
123
|
以下の部分ではmaxとminがあるのでここで、始点と終点の可動する制限を設定しているのでしょうか?
|
124
124
|
```ここに言語を入力
|
125
125
|
let prg = (realRotationAngle - startAngle)/(-1 * (startAngle + abs(endAngle)))
|
14
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -125,7 +125,7 @@
|
|
125
125
|
let prg = (realRotationAngle - startAngle)/(-1 * (startAngle + abs(endAngle)))
|
126
126
|
value = prg <= 0.5 ? max(0,prg) : min(1,prg)
|
127
127
|
```
|
128
|
-
**8/24**
|
128
|
+
**8/24**
|
129
129
|
```ここに言語を入力
|
130
130
|
タッチした回数が初回だった場合
|
131
131
|
if let touch = touches[touches.startIndex] as? UITouch {
|
@@ -133,14 +133,17 @@
|
|
133
133
|
let rotation = rotationForLocation(touch.location(in: self))
|
134
134
|
```
|
135
135
|
|
136
|
-
> 引数:touch.location(in: self)
|
136
|
+
> 上のコードの引数:**rotationForLocation**(touch.location(in: self))について
|
137
|
+
```ここに言語を入力
|
137
138
|
fileprivate func rotationForLocation(_ location: CGPoint) -> CGFloat {
|
138
|
-
|
139
|
+
タッチした部分のX座標の半分とy座標の半分をoffsetとして
|
139
|
-
|
140
|
+
let offset = CGPoint(x: location.x - bounds.midX, y: location.y - bounds.midY)
|
140
|
-
|
141
|
+
その座標を返す?
|
141
|
-
|
142
|
+
return atan2(offset.y, offset.x)
|
142
|
-
|
143
|
+
}
|
144
|
+
```
|
143
145
|
|
146
|
+
|
144
147
|
```ここに言語を入力
|
145
148
|
// convert rad to angles
|
146
149
|
var realRotationAngle = -(rotation * 180 / CGFloat(Double.pi))
|
13
追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -38,8 +38,45 @@
|
|
38
38
|
```
|
39
39
|
|
40
40
|
swift3で書かれた[github](https://github.com/ispiropoulos/PRGRoundSlider)を参考にしております。
|
41
|
+
文字数の制限で全て載せられないのですが、メインのファイルは以下です。
|
42
|
+
```ViewController
|
41
|
-
|
43
|
+
import UIKit
|
42
44
|
|
45
|
+
class ViewController: UIViewController {
|
46
|
+
|
47
|
+
@IBOutlet weak var sliderView: PRGRoundRangeSlider!
|
48
|
+
//今回扱っているスライダー
|
49
|
+
@IBOutlet weak var sliderContainerView: UIView!
|
50
|
+
|
51
|
+
override func viewDidLoad() {
|
52
|
+
super.viewDidLoad()
|
53
|
+
〜省略〜
|
54
|
+
DispatchQueue.main.async {
|
55
|
+
self.setupSliderProgrammatically()
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
func setupSliderProgrammatically(){
|
60
|
+
|
61
|
+
let sliderView = PRGRoundSlider(
|
62
|
+
frame: sliderContainerView.bounds,
|
63
|
+
value: 0.5,
|
64
|
+
strokeColor: SliderKit.darkBlueColor, //SliderKit
|
65
|
+
strokeWidth: 5,
|
66
|
+
gradientColor: SliderKit.darkPinkColor, //SliderKit
|
67
|
+
startAngle: 130,// 210,
|
68
|
+
endAngle: 50, //-30,
|
69
|
+
startText: "0%",
|
70
|
+
endText: "100%"
|
71
|
+
) //クロージャー
|
72
|
+
{ (value) in
|
73
|
+
return "(Int(value*100))%" //0.5→50%にしてreturn
|
74
|
+
}
|
75
|
+
sliderContainerView.addSubview(sliderView)
|
76
|
+
}
|
77
|
+
}
|
78
|
+
```
|
79
|
+
|
43
80
|
**追記(現状):8/22 23:00**
|
44
81
|
始点と終点をstartAngleとendAngleを210/-30から130と50に変更することで、左上と右上に移動させて円弧の描写をclockwise: falseで反転させることに成功。そこから先のスライダーの動きに関してどうやったら反時計回りでかつ0%から100%に辿り着けるようになるかまだ、解決策を考えている。
|
45
82
|

|
12
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -87,4 +87,37 @@
|
|
87
87
|
```ここに言語を入力
|
88
88
|
let prg = (realRotationAngle - startAngle)/(-1 * (startAngle + abs(endAngle)))
|
89
89
|
value = prg <= 0.5 ? max(0,prg) : min(1,prg)
|
90
|
+
```
|
91
|
+
**8/24**
|
92
|
+
```ここに言語を入力
|
93
|
+
タッチした回数が初回だった場合
|
94
|
+
if let touch = touches[touches.startIndex] as? UITouch {
|
95
|
+
rotationにrotationForLocationの座標を渡す
|
96
|
+
let rotation = rotationForLocation(touch.location(in: self))
|
97
|
+
```
|
98
|
+
|
99
|
+
> 引数:touch.location(in: self)
|
100
|
+
fileprivate func rotationForLocation(_ location: CGPoint) -> CGFloat {
|
101
|
+
タッチした部分のX座標の半分とy座標の半分をoffsetとして
|
102
|
+
> let offset = CGPoint(x: location.x - bounds.midX, y: location.y - bounds.midY)
|
103
|
+
その座標を返す?
|
104
|
+
> return atan2(offset.y, offset.x)
|
105
|
+
}
|
106
|
+
|
107
|
+
```ここに言語を入力
|
108
|
+
// convert rad to angles
|
109
|
+
var realRotationAngle = -(rotation * 180 / CGFloat(Double.pi))
|
110
|
+
|
111
|
+
// We need to convert the rotation angle into paintcode oval angle
|
112
|
+
両オペランド(両辺)がtrueだったとき
|
113
|
+
|
114
|
+
if realRotationAngle > -180 && realRotationAngle < -90 {
|
115
|
+
|
116
|
+
realRotationAngle = 180 + (180+realRotationAngle) //180
|
117
|
+
}
|
118
|
+
|
119
|
+
let prg = (realRotationAngle - startAngle) / (-1 * (startAngle + abs(endAngle)))
|
120
|
+
|
121
|
+
value = prg <= 0.5 ? max(0,prg) : min(1,prg)
|
122
|
+
}
|
90
123
|
```
|
11
質問
title
CHANGED
File without changes
|
body
CHANGED
@@ -82,4 +82,9 @@
|
|
82
82
|
}
|
83
83
|
```
|
84
84
|
**8/23 15:40
|
85
|
-
質問:やはり上のコード部分(func updateRotationWithTouches)の仕組みが理解できません。ここの部分だけでもどなたか回答貰えると助かります。**
|
85
|
+
質問:やはり上のコード部分(func updateRotationWithTouches)の仕組みが理解できません。ここの部分だけでもどなたか回答貰えると助かります。**
|
86
|
+
以下の部分ではmaxとminがあるのでここで、始点と終点の可動する制限を設定しているのでしょうか?
|
87
|
+
```ここに言語を入力
|
88
|
+
let prg = (realRotationAngle - startAngle)/(-1 * (startAngle + abs(endAngle)))
|
89
|
+
value = prg <= 0.5 ? max(0,prg) : min(1,prg)
|
90
|
+
```
|
10
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -82,4 +82,4 @@
|
|
82
82
|
}
|
83
83
|
```
|
84
84
|
**8/23 15:40
|
85
|
-
質問:やはり上のコード部分の仕組みが理解できません。ここの部分だけでもどなたか回答貰えると助かります。**
|
85
|
+
質問:やはり上のコード部分(func updateRotationWithTouches)の仕組みが理解できません。ここの部分だけでもどなたか回答貰えると助かります。**
|
9
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -81,4 +81,5 @@
|
|
81
81
|
}
|
82
82
|
}
|
83
83
|
```
|
84
|
+
**8/23 15:40
|
84
|
-
|
85
|
+
質問:やはり上のコード部分の仕組みが理解できません。ここの部分だけでもどなたか回答貰えると助かります。**
|
8
追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -80,4 +80,5 @@
|
|
80
80
|
value = prg <= 0.5 ? max(0,prg) : min(1,prg)
|
81
81
|
}
|
82
82
|
}
|
83
|
-
```
|
83
|
+
```
|
84
|
+
**8/23 15:40 質問:やはり上のコード部分の仕組みが理解できません。ここの部分だけでもどなたか回答貰えると助かります。**
|
7
追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -47,4 +47,37 @@
|
|
47
47
|
円弧の計算の仕組みが難しいため、わかるまで苦戦中です。
|
48
48
|
おそらく「CGFloat.pi/180」の角度の設定に問題がある。ここら辺の動作に関する円弧の仕組みがわかれば、
|
49
49
|
反転させた円弧でもうまく動くと考えている。
|
50
|
-

|
50
|
+

|
51
|
+
|
52
|
+
**追記:8/23 12:00**
|
53
|
+
スライダーの動きの範囲に関しては、PRGRounderSlider.swiftのここの部分で変更できる可能性があるのでどうやって動いているかじっくり試行錯誤で変更を試している状況です。
|
54
|
+
```PRGRounderSlider
|
55
|
+
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
56
|
+
super.touchesBegan(touches, with: event)
|
57
|
+
updateRotationWithTouches(touches)
|
58
|
+
|
59
|
+
}
|
60
|
+
|
61
|
+
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
|
62
|
+
super.touchesMoved(touches, with: event)
|
63
|
+
updateRotationWithTouches(touches)
|
64
|
+
}
|
65
|
+
|
66
|
+
func updateRotationWithTouches(_ touches: Set<NSObject>) {
|
67
|
+
if let touch = touches[touches.startIndex] as? UITouch {
|
68
|
+
let rotation = rotationForLocation(touch.location(in: self))
|
69
|
+
|
70
|
+
// convert rad to angles
|
71
|
+
var realRotationAngle = -(rotation * 180 / CGFloat(Double.pi)) //M_PI
|
72
|
+
|
73
|
+
|
74
|
+
// We need to convert the rotation angle into paintcode oval angle
|
75
|
+
if realRotationAngle > -180 && realRotationAngle < -90 {
|
76
|
+
realRotationAngle = 180 + (180+realRotationAngle)
|
77
|
+
}
|
78
|
+
|
79
|
+
let prg = (realRotationAngle - startAngle)/(-1 * (startAngle + abs(endAngle)))
|
80
|
+
value = prg <= 0.5 ? max(0,prg) : min(1,prg)
|
81
|
+
}
|
82
|
+
}
|
83
|
+
```
|
6
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
**以下の青い「Single Slider」
|
1
|
+
**以下の青い「Single Slider」を「左下と右下に位置する始点(0%)と終点(100%)」を、「始点(0%)を左上、終点(100%)を右上」に設置し、スライダーのつまみを真ん中の円の下側を潜るように反時計回りに半周して終わるように変更を加えたい。(そっくりそのまま逆さまの状態に)**
|
2
2
|
|
3
|
-

|
4
4
|
|
5
5
|
**やりたいことのイメージ**
|
6
6
|

|
5
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -41,11 +41,9 @@
|
|
41
41
|
宜しくお願いします。
|
42
42
|
|
43
43
|
**追記(現状):8/22 23:00**
|
44
|
-
始点と終点をstartAngleとendAngleを210/-30から130と50に変更することで、左上と右上に移動させて円弧の描写をclockwise: falseで反転させることに成功。そこから先のスライダーの動きに関して
|
44
|
+
始点と終点をstartAngleとendAngleを210/-30から130と50に変更することで、左上と右上に移動させて円弧の描写をclockwise: falseで反転させることに成功。そこから先のスライダーの動きに関してどうやったら反時計回りでかつ0%から100%に辿り着けるようになるかまだ、解決策を考えている。
|
45
45
|

|
46
|
-
動きに関しては以下のように0%からはうまく始まるが、
|
47
|
-
![イメージ説明]
|
48
|
-
スライダーのつまみが100%の終点を超えて180度近く、先のところまで可動してしまう。
|
46
|
+
動きに関しては0%からはうまく始まるが、スライダーのつまみが100%の終点を超えて180度近く、先のところまで可動してしまう。
|
49
47
|
円弧の計算の仕組みが難しいため、わかるまで苦戦中です。
|
50
48
|
おそらく「CGFloat.pi/180」の角度の設定に問題がある。ここら辺の動作に関する円弧の仕組みがわかれば、
|
51
49
|
反転させた円弧でもうまく動くと考えている。
|
4
追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -42,9 +42,9 @@
|
|
42
42
|
|
43
43
|
**追記(現状):8/22 23:00**
|
44
44
|
始点と終点をstartAngleとendAngleを210/-30から130と50に変更することで、左上と右上に移動させて円弧の描写をclockwise: falseで反転させることに成功。そこから先のスライダーの動きに関してはまだ、解決策を考えている。
|
45
|
-

|
46
46
|
動きに関しては以下のように0%からはうまく始まるが、
|
47
|
-
![イメージ説明]
|
47
|
+
![イメージ説明]
|
48
48
|
スライダーのつまみが100%の終点を超えて180度近く、先のところまで可動してしまう。
|
49
49
|
円弧の計算の仕組みが難しいため、わかるまで苦戦中です。
|
50
50
|
おそらく「CGFloat.pi/180」の角度の設定に問題がある。ここら辺の動作に関する円弧の仕組みがわかれば、
|
3
追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -40,4 +40,13 @@
|
|
40
40
|
swift3で書かれた[github](https://github.com/ispiropoulos/PRGRoundSlider)を参考にしております。
|
41
41
|
宜しくお願いします。
|
42
42
|
|
43
|
+
**追記(現状):8/22 23:00**
|
44
|
+
始点と終点をstartAngleとendAngleを210/-30から130と50に変更することで、左上と右上に移動させて円弧の描写をclockwise: falseで反転させることに成功。そこから先のスライダーの動きに関してはまだ、解決策を考えている。
|
45
|
+

|
46
|
+
動きに関しては以下のように0%からはうまく始まるが、
|
47
|
+

|
48
|
+
スライダーのつまみが100%の終点を超えて180度近く、先のところまで可動してしまう。
|
49
|
+
円弧の計算の仕組みが難しいため、わかるまで苦戦中です。
|
50
|
+
おそらく「CGFloat.pi/180」の角度の設定に問題がある。ここら辺の動作に関する円弧の仕組みがわかれば、
|
43
|
-
|
51
|
+
反転させた円弧でもうまく動くと考えている。
|
52
|
+

|
2
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|

|
4
4
|
|
5
|
+
**やりたいことのイメージ**
|
6
|
+

|
7
|
+
|
5
8
|
**現時点での理解は、UIBezierPathのclockwiseをflaseにすることで半時計周りにすることはできたが、始点と終点、スライダーのつまみの動きがどのように動作しているのか分からない状態です。**
|
6
9
|
|
7
10
|
```SliderKit
|
1
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -24,8 +24,8 @@
|
|
24
24
|
context.saveGState()
|
25
25
|
// 中心点
|
26
26
|
context.translateBy(x: 45, y: 46) //45
|
27
|
-
//
|
27
|
+
// 回転する
|
28
|
-
context.rotate(by: -selectionAngle * CGFloat.pi/180) //
|
28
|
+
context.rotate(by: -selectionAngle * CGFloat.pi/180) //
|
29
29
|
|
30
30
|
let selectionThumbPath = UIBezierPath(ovalIn: CGRect(x: 36.3, y: -4.13, width: 8, height: 8))
|
31
31
|
thumbColor.setFill()
|