如何在Swift 3中定义MPMediaItemPropertyArtwork

时间:2016-11-25 01:18:20

标签: ios swift

此代码的工作正确:

func setInfoCenterCredentials(_ artist: String, _ title: String, _ image: UIImage) {
    let mpic = MPNowPlayingInfoCenter.default()        
    let albumArt = MPMediaItemArtwork(image: image)
    mpic.nowPlayingInfo = [MPMediaItemPropertyTitle: title,
                           MPMediaItemPropertyArtist: artist,
                           MPMediaItemPropertyArtwork: albumArt]
}

但Xcode抱怨:let albumArt = MPMediaItemArtwork(image: image)

  

'init(image :)'在iOS 10.0中已弃用

我试图将image设为MPMediaItemPropertyArtwork: image,但这会导致崩溃。

如何为iOS 10.0正确设置?非常感谢帮助。

编辑:是的。我在文档中找到了该部分:

init(boundsSize: CGSize, requestHandler: @escaping (CGSize) -> UIImage)

但我不知道如何使用它。

1 个答案:

答案 0 :(得分:4)

那么初始化程序要求的是什么?它想要一个大小(足够公平),它想要一个函数,它提供给定大小的图像。

所以你可以天真地实现它:

let albumArt = MPMediaItemArtwork(boundsSize:mySize) { sz in
    return image
}

如果填写了必要的空白,那么应该让你通过编译器(让我知道它是不是;我还没有对它进行测试)。但是,它不是一个很好的实现!您应该在函数中执行的操作是将图像的大小调整为传入参数(我的代码中为sz)中请求的大小。我想我会把它作为读者的练习......!