如何为 MPNowPlayingInfoCenter 设置艺术图片
How to Set Artwork Image for MPNowPlayingInfoCenter
我一直在尝试使用 MPMediaItemPropertyArtwork
更新 MPNowPlayingInfoCenter
中显示的项目的艺术作品,如以下代码所示 Apple's docs
if let image = UIImage(named: "image_here") {
nowPlayingInfo[MPMediaItemPropertyArtwork] =
MPMediaItemArtwork(boundsSize: image.size) { size in
return image
}
}
我遇到的问题是,这会设置一个较小的图像,如下图中红色方块中所示。我正在尝试弄清楚如何在较大的黄色方块中设置图像,但找不到任何可区分两者的文档。
编辑
vint 在下面的回答中阐明了较小的图标是应用程序图标。然而,我成功地设置了 nowPlayingInfo 字典,因为我的其他元数据正在到达锁定屏幕控件,如标题(模糊)、持续时间、经过的播放时间)。只是艺术品似乎不起作用。
很明显你没有成功设置曲目的封面图片
MPNowPlayingInfoCenter
,红色方块中的图像是您的应用程序图标,这是 MPNowPlayingInfoCenter
的默认行为,
我猜你下一步输了
// set the info dictionary back to default control center
MPNowPlayingInfoCenter.default.nowPlayingInfo = nowPlayingInfo
如果你已经设置了,你应该找到失败的原因,
以防万一有人发现这个问题并且像我一样发疯,我可以通过将我的 UIImage
正确调整为 [=13] 传入的 size
参数来设置图像=] 回调函数。正如 docs 中所说:
The request handler returns an image in the newly requested size.
The requested size must be less than the boundsSize parameter.
然后将我的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)
}
}
我一直在尝试使用 MPMediaItemPropertyArtwork
更新 MPNowPlayingInfoCenter
中显示的项目的艺术作品,如以下代码所示 Apple's docs
if let image = UIImage(named: "image_here") {
nowPlayingInfo[MPMediaItemPropertyArtwork] =
MPMediaItemArtwork(boundsSize: image.size) { size in
return image
}
}
我遇到的问题是,这会设置一个较小的图像,如下图中红色方块中所示。我正在尝试弄清楚如何在较大的黄色方块中设置图像,但找不到任何可区分两者的文档。
编辑
vint 在下面的回答中阐明了较小的图标是应用程序图标。然而,我成功地设置了 nowPlayingInfo 字典,因为我的其他元数据正在到达锁定屏幕控件,如标题(模糊)、持续时间、经过的播放时间)。只是艺术品似乎不起作用。
很明显你没有成功设置曲目的封面图片
MPNowPlayingInfoCenter
,红色方块中的图像是您的应用程序图标,这是 MPNowPlayingInfoCenter
的默认行为,
我猜你下一步输了
// set the info dictionary back to default control center
MPNowPlayingInfoCenter.default.nowPlayingInfo = nowPlayingInfo
如果你已经设置了,你应该找到失败的原因,
以防万一有人发现这个问题并且像我一样发疯,我可以通过将我的 UIImage
正确调整为 [=13] 传入的 size
参数来设置图像=] 回调函数。正如 docs 中所说:
The request handler returns an image in the newly requested size. The requested size must be less than the boundsSize parameter.
然后将我的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)
}
}