2016-11-25 55 views
1

此代码正确:如何斯威夫特定义MPMediaItemPropertyArtwork 3

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(图像:)' 在iOS的10.0

弃用

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

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

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

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

但我不知道如何使用它。

+0

未删除我的问题,即使我有downvotes ...是的,我已经找到了这个,但我不知道如何处理这个。对不起,我的愚蠢问题和我的知识缺乏... –

+0

现在你已经改变了你提问的方式,这是一个很好的问题,所以我已经收回了我的downvote。你如何使用它?我会告诉你,挂在... – matt

回答

2

那么这个初始值设定项要求什么?它想要一个尺寸(足够公平),它想要一个函数,它提供给定大小的图像。

所以,你可以天真实现它是这样的:

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

也就是说,被填充到必要的空白,应该让你过去的编译器(让我知道,如果没有,我的天堂”测试它)。但是,这不是一个很好的实现!你在功能应该做什么是您的图像大小降低到传入参数(我的代码sz)中请求的大小。我想我会把它作为读者的练习......!

+0

我不明白的是,之前通过'让albumArt = MPMediaItemArtwork(image:image)',我'设置'一个图像,图像名为' image'。用新的方式我'返回'一个图像。但是什么形象?以及如何将'我的''UIImage'作为'albumArt' –

+0

在我的代码中,您仍将它设置为名为'image'的图像。而你仍然将它设置为'albumArt'。我不明白这个问题。 – matt

+0

哦。你是对的...我刚刚尝试过。我猜想我读的代码错了......我以为返回总是返回函数的'result' ......我不明白,因为从我的角度来看,我没有给'function'我的图像'作为参数......非常感谢您的帮助 –