问题描述
我一直在尝试使用 MPNowPlayingInfoCenter
更新为 MPMediaItemPropertyArtwork
中的项目显示的插图,如下面的代码所示Apple's docs
if let image = UIImage(named: "image_here") {
NowPlayingInfo[MPMediaItemPropertyArtwork] =
MPMediaItemArtwork(boundsSize: image.size) { size in
return image
}
}
我遇到的问题是,这会设置一个较小的图像,如下面的红色方块中的照片所示。我想弄清楚如何在较大的黄色方块中设置图像,但找不到任何区分两者的文档。
编辑
vint 下面的回答澄清了较小的图标是应用程序图标。然而,我成功地设置了 NowPlayingInfo 字典,因为我的其他元数据正在到达锁定屏幕控件,如标题(模糊)、持续时间、已播放时间)。这只是艺术品似乎不起作用。
解决方法
以防万一有人发现这个问题并且像我一样发疯,我能够通过将我的 UIImage
正确调整为传入 size
参数来设置图像给 MPMediaItemArtwork
回调函数。正如 docs 中所说:
请求处理程序以新请求的大小返回图像。 请求的大小必须小于 boundsSize 参数。
然后使用以下扩展名将我的 image
设置为传入的 size
参数,最终成功设置了 MPMediaItemPropertyArtwork
。
extension UIImage {
func imageWith(newSize: CGSize) -> UIImage {
let renderer = UIGraphicsImageRenderer(size: newSize)
let image = renderer.image { _ in
self.draw(in: CGRect.init(origin: CGPoint.zero,size: newSize))
}
return image.withRenderingMode(self.renderingMode)
}
}
,
显然你没有成功地将曲目的封面图片设置为
MPNowPlayingInfoCenter
,红色方块中的图片是您的应用图标,这是MPNowPlayingInfoCenter
的默认行为,
我猜你错过了下一步
// set the info dictionary back to default control center
MPNowPlayingInfoCenter.default.nowPlayingInfo = nowPlayingInfo
如果你已经设置了,你应该找到失败的原因,seed this answer