質問編集履歴
2
追記2
title
CHANGED
File without changes
|
body
CHANGED
@@ -55,7 +55,10 @@
|
|
55
55
|
}
|
56
56
|
```
|
57
57
|
|
58
|
-
ですが、あくまでも **タイムラグが少なくなった** ということで根本の解決にはなっていない気がします・・・
|
58
|
+
ですが、あくまでも **タイムラグが少なくなった** ということで根本の解決にはなっていない気がします・・・
|
59
|
+
timerを0.001秒にし、上記コードにしても、
|
60
|
+
ごくわずかなズレは残り、また、他のアプリなどを起動し、端末に負担がかかっているときはよりズレて表示されているような気がします・・・
|
61
|
+
|
59
62
|
どうかもう一度、お力添えをお願いいたします・・・
|
60
63
|
|
61
64
|
###再考察
|
1
再考察・・・
title
CHANGED
File without changes
|
body
CHANGED
@@ -36,5 +36,33 @@
|
|
36
36
|
``timer``の``timeInterval``引数を``0.1``や``0.01``としても変わりませんでした。
|
37
37
|
実際の処理でタイムラグが発生しているように思えます。
|
38
38
|
|
39
|
+
###追記
|
40
|
+
2017.8.20
|
41
|
+
再生時間と同期しているか、というチェックの方法はアプリの画面を起動し、上にコントロールセンターのオーディオコントロールの画面を表示してチェックしています。
|
42
|
+
そのため、iOSのシステム的には小数点以下を切り捨てにして表示していると思うので、
|
43
|
+
``Int(player.currentPlaybackTime)``として切り捨てても問題ないのでは、と考えました。
|
44
|
+
また、剰余計算に``truncatingRemainder(dividingBy: 60)``や``sec - (sec / 60) * 60``を使っても、``mm:ss``のString型にする方法がわからず・・・
|
45
|
+
無理に代入すると``01:14532...``という形になってしまいました・・・
|
46
|
+
|
47
|
+
---
|
48
|
+
現時点では一度``count``に``player.currentPlaybackTime``代入せず、直接``Int()``内に入れることでタイムラグがほぼ解消しました。
|
49
|
+
```swift
|
50
|
+
if player.nowPlayingItem != nil {
|
51
|
+
let min = Int(player.currentPlaybackTime) / 60
|
52
|
+
let sec = Int(player.currentPlaybackTime.truncatingRemainder(dividingBy: 60))
|
53
|
+
//let sec = Int(player.currentPlaybackTime) % 60よりもなぜかラグが少ないです。
|
54
|
+
timeLabel.text = String(format: "%02d:%02d", min, sec)
|
55
|
+
}
|
56
|
+
```
|
57
|
+
|
58
|
+
ですが、あくまでも **タイムラグが少なくなった** ということで根本の解決にはなっていない気がします・・・実際、チェックしてみるとぎりぎり目測のできる範疇でのタイムラグがあります。本当にぎりぎり、気にしなくてもいいのでは、という範疇ですが・・・
|
59
|
+
どうかもう一度、お力添えをお願いいたします・・・
|
60
|
+
|
61
|
+
###再考察
|
62
|
+
``String(format:)``の形にも慣れていないので、そこでも問題があるのだろうか、とも考えています。
|
63
|
+
```swift
|
64
|
+
timeLabel.text = String(format: "%02d:%02d", Int(min), Int(sec))
|
65
|
+
```
|
66
|
+
としても、ラグはあったのですが・・・。
|
39
67
|
###補足情報(言語/FW/ツール等のバージョンなど)
|
40
68
|
swift3 xcode8
|