我使用BMPlayer。 使用func:
时bmPlayerView.playTimeDidChange = { (currentTime: TimeInterval, totalTime: TimeInterval) in
// print("playTimeDidChange currentTime: \(currentTime) totalTime: \(totalTime)")
self.subtitleShow(currentTime: currentTime)
}
用于标签中的show Subtitle。
func subtitleShow(currentTime: TimeInterval){
let millisecond = Int(currentTime * 1000)
for i in (clip.subtitle?.enDialog)!{
if i.start <= millisecond && i.end >= millisecond {
subtitleLabel.text = i.text
return
}
}
}
但显示错误:
请帮帮我
答案 0 :(得分:1)
错误消息只是告诉您更新主线程上的标签:
bmPlayerView.playTimeDidChange = { (currentTime: TimeInterval, totalTime: TimeInterval) in
DispatchQueue.main.async {
self.subtitleShow(currentTime: currentTime)
}
}
答案 1 :(得分:1)
如果要更改UI,则必须从主线程执行此操作。 你可以用这个
bmPlayerView.playTimeDidChange = { (currentTime: TimeInterval, totalTime: TimeInterval) in
// print("playTimeDidChange currentTime: \(currentTime) totalTime: \(totalTime)")
dispatch_async(dispatch_get_main_queue()) { [weak self] () -> Void in
self?.subtitleShow(currentTime: currentTime)
}
}
答案 2 :(得分:1)
你无法从后台修改gui。为此,您需要使用
DispatchQueue.main.async(){
//code
}