質問編集履歴

1

追記

2017/11/22 14:03

投稿

mitci
mitci

スコア37

test CHANGED
File without changes
test CHANGED
@@ -73,3 +73,85 @@
73
73
 
74
74
 
75
75
  swift3 xcode8
76
+
77
+
78
+
79
+
80
+
81
+ ###追記・前提2
82
+
83
+ 子ビュー内においてあるUISliderは、MediaPlayerフレームワークを利用した音楽再生用のシークバーのため、min値を0に、max値を曲の再生時間にしてあります。
84
+
85
+ **touchDown**で[00:02]などの秒数表示ラベルを更新するタイマーを止めて、
86
+
87
+ **valueChanged**で現在のツマミの位置の秒数を[xx:xx]のフォーマットにして秒数ラベルに代入し、
88
+
89
+ **touchUp**で再び秒数表示の更新をするタイマーを再設定しています。
90
+
91
+
92
+
93
+ コードでいうと以下の通りです。
94
+
95
+ ```swift
96
+
97
+ //UISliderのコード
98
+
99
+ func sliderTimerStart() {
100
+
101
+ sliderTimer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(sliderThumbPossitioning), userInfo: nil, repeats: true)
102
+
103
+ }
104
+
105
+
106
+
107
+ @IBAction func seekBarSlidertouchDown(_ sender: UISlider) {
108
+
109
+ sliderTimer.invalidate()
110
+
111
+ }
112
+
113
+ //タイマーを停止する
114
+
115
+
116
+
117
+ @IBAction func seekBarSliderValueChanged(_ sender: UISlider) {
118
+
119
+ let currentTimeValue = TimeInterval(sender.value)
120
+
121
+ let min = Int(currentTimeValue) / 60
122
+
123
+ let sec = Int(currentTimeValue) % 60
124
+
125
+ currentTime = String(format: "%02d:%02d", min, sec)
126
+
127
+ timeLabel.text = currentTime
128
+
129
+ }
130
+
131
+ //タイムラベルをツマミの位置へ更新
132
+
133
+
134
+
135
+ @IBAction func seekBarSliderTouchUpInside(_ sender: UISlider) {
136
+
137
+ player.currentPlaybackTime = TimeInterval(sender.value)
138
+
139
+ sliderTimerStart()
140
+
141
+ }
142
+
143
+ //再生時間をツマミの位置へ。タイマーの再開
144
+
145
+
146
+
147
+ @IBAction func seekBarSliderTouchUpOutside(_ sender: UISlider) {
148
+
149
+ player.currentPlaybackTime = TimeInterval(sender.value)
150
+
151
+ sliderTimerStart()
152
+
153
+ }
154
+
155
+
156
+
157
+ ```