我一直试图使用MPNowPlayingInfoCenter更新MPMediaItemPropertyArtwork中的一个项目所显示的艺术品,如下所示,摘自苹果的文档的代码
if let image = UIImage(named: "image_here") {
nowPlayingInfo[MPMediaItemPropertyArtwork] =
MPMediaItemArtwork(boundsSize: image.size) { size in
return image
}
}我的问题是,这设置了一个较小的图像,如下图所示的红色方块。我试图找出如何在更大的黄色方框中设置图像,但我找不到任何区分两者的文档。

编辑
vint下面的回答澄清了较小的图标是应用程序图标。但是,我正在成功地设置nowPlayingInfo字典,因为我的其他元数据正在到达锁定屏幕控件,如标题(模糊)、持续时间、经过的播放时间)。只是艺术品似乎不起作用。
发布于 2021-02-07 21:45:18
为了防止有人发现这个问题,并像我自己一样疯狂,我能够通过正确地将我的UIImage调整为赋予MPMediaItemArtwork回调函数的传入的size参数来设置图像。就像文档里说的
请求处理程序返回一个新请求大小的图像。请求的大小必须小于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)
}
}
if let image = UIImage(named: "image_here") {
nowPlayingInfo[MPMediaItemPropertyArtwork] =
MPMediaItemArtwork(boundsSize: image.size) { size in
// Extension used here to return newly sized image
return image.imageWith(newSize: size)
}
}发布于 2021-02-05 09:45:24
显然,您没有成功地将轨道的封面图像设置为MPNowPlayingInfoCenter,红色方格中的图像是应用程序图标,这是MPNowPlayingInfoCenter的默认行为,
我想你失去了下一步
// set the info dictionary back to default control center
MPNowPlayingInfoCenter.default.nowPlayingInfo = nowPlayingInfo如果您已经设置了它,您应该找到失败的原因,播下这个答案
https://stackoverflow.com/questions/66056233
复制相似问题