Xcode 6-SWIFT-将CMTime转换为浮点 var songs=MPMediaQuery() var localSongs=songs.items songList=NSMutableArray(数组:localSongs) tableView.reloadData() var song=MPMediaItem(编码者:歌曲列表[0]作为NSCoder) var currentItem=AVPlayerItem(URL:song.valueForProperty(MPMediaItemPropertyAsetUrl)作为NSURL) player.replaceCurrentItemWithPlayerItem(当前项) player.play() var songTitle:AnyObject!=song.valueForProperty(MPMediaItemPropertyTitle) songName.text=歌曲标题为?一串 sliderOutlet.value=Float(player.currentTime())/
Xcode 6-SWIFT-将CMTime转换为浮点 var songs=MPMediaQuery() var localSongs=songs.items songList=NSMutableArray(数组:localSongs) tableView.reloadData() var song=MPMediaItem(编码者:歌曲列表[0]作为NSCoder) var currentItem=AVPlayerItem(URL:song.valueForProperty(MPMediaItemPropertyAsetUrl)作为NSURL) player.replaceCurrentItemWithPlayerItem(当前项) player.play() var songTitle:AnyObject!=song.valueForProperty(MPMediaItemPropertyTitle) songName.text=歌曲标题为?一串 sliderOutlet.value=Float(player.currentTime())/,swift,uislider,cmtime,Swift,Uislider,Cmtime,CMTime是一种结构,包含值、时间刻度和其他字段, 因此,不能将其“强制转换”为浮点值 幸运的是,有一个转换函数CMTimeGetSeconds(): 更新:从Swift 3开始,player.currentTime返回 TimeInterval,它是Double的类型别名。 因此,到Float的转换简化为 let cmTime = player.currentTime() let floatTime = Float(CMTimeGetSeconds(player.currentTime()
CMTime
是一种结构,包含值
、时间刻度
和其他字段,
因此,不能将其“强制转换”为浮点值
幸运的是,有一个转换函数CMTimeGetSeconds()
:
更新:从Swift 3开始,
player.currentTime
返回
TimeInterval
,它是Double
的类型别名。
因此,到Float
的转换简化为
let cmTime = player.currentTime()
let floatTime = Float(CMTimeGetSeconds(player.currentTime()))
CMTime是一个结构,包含值、时间刻度、标志和历元。因此,不能将其“强制转换”为浮点值 您可以通过直接写入来使用该值
let floatTime = Float(player.currentTime)
但这只会给出播放器的值,以毫秒为单位。要以秒为单位获取值,请使用以下命令:
sliderOutlet.value = Float(player.currentTime().value)
请注意,这也可能不是正确的方式,你应该有你的滑块的价值。是的,这是工作,谢谢你@Martin PS:有没有一个提示,让我自己在未来计算这些东西?(当然,除了在这里问:)我试着阅读CMTime引用,但没有弄明白。@Abdou023:嗯,
CMTimeGetSeconds()
在中有记录。您还可以单击Swift源文件中的类型或方法(例如,在CMTime上),这将引导您找到Swift定义,然后在其中找到相关方法。
sliderOutlet.value = Float(player.currentTime().value)
sliderOutlet.value = Float(CMTimeGetSeconds(player.currentTime()))