我使用下面的代码在我的应用程序中添加现在正在播放的艺术品作为子视图。
override func viewDidLoad() {
super.viewDidLoad()
let artWork = musicPlayer.nowPlayingItem?.valueForProperty(MPMediaItemPropertyArtwork)
let image = artWork?.imageWithSize(CGSizeMake(300, 300))
let imageView = UIImageView(image: image)
imageView.frame = CGRectMake(1, 1, 300, 300)
self.view.addSubview(imageView)
}
不仅没有出现图像,我在控制台中得到这个警告:
moveCircleAround[2385:753430] BSXPCMessage received error for message: Connection interrupted
有Swift知识的人能帮我解决这个问题吗?
你将无法在Xcode 7测试版中继续。所有与MPMusicPlayerController的交互目前在iOS 9测试版中被破坏。请使用Xcode 6.4和iOS 8.4,直到这个问题被修复。
编辑修正在beta 5,所以它是安全的返回到Xcode 7现在。
在一些情况下,此代码无法获取artwork图像:
-
musicPlayer
没有nowPlayingItem
。 -
nowPlayingItem
没有图稿或尚未下载。 - 图稿没有找到与您指定的大小匹配的图像。
尝试在函数的顶部放置一个断点,并逐步执行函数,看看哪个变量被设置为nil
。
另外,请注意BSXPCMessage
错误可能暗示上述第二个问题是原因。也许可以尝试一首不同的歌曲,并首先检查它在你的音乐应用程序中是否有插图。
(注意,您可以通过使用nowPlayingItem?.artwork
而不是nowPlayingItem?.valueForProperty(MPMediaItemPropertyArtwork)
来简化代码)