在Swift中将专辑图片添加为子视图

时间:2015-07-25 00:39:53

标签: ios swift mpmediaitem

我正在使用以下代码将正在播放的作品添加为我的应用程序中的子视图。

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的人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您无法继续使用Xcode 7测试版。所有与MPMusicPlayerController的交互目前在iOS 9 beta中都已中断。使用Xcode 6.4和iOS 8.4,直到修复它。

编辑已修复测试版5,因此现在可以安全返回Xcode 7。

答案 1 :(得分:0)

在某些情况下,此代码无法获取图稿图像:

  • musicPlayer还没有nowPlayingItem
  • nowPlayingItem没有艺术品,或者尚未下载。
  • 图稿找不到您指定的匹配尺寸的图像。

尝试在函数顶部放置一个断点并逐步执行该函数,并查看哪个变量设置为nil

另请注意,BSXPCMessage错误可能暗示上述第二个问题是原因。也许尝试不同的歌曲并首先检查它是否在您的音乐应用中有艺术作品。

(请注意,您可以使用nowPlayingItem?.artwork代替nowPlayingItem?.valueForProperty(MPMediaItemPropertyArtwork)来简化代码。)