首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为MPNowPlayingInfoCenter设置艺术品图像

如何为MPNowPlayingInfoCenter设置艺术品图像
EN

Stack Overflow用户
提问于 2021-02-05 01:15:02
回答 2查看 888关注 0票数 2

我一直试图使用MPNowPlayingInfoCenter更新MPMediaItemPropertyArtwork中的一个项目所显示的艺术品,如下所示,摘自苹果的文档的代码

代码语言:javascript
复制
if let image = UIImage(named: "image_here") {
    nowPlayingInfo[MPMediaItemPropertyArtwork] =
        MPMediaItemArtwork(boundsSize: image.size) { size in
            return image
    }
}

我的问题是,这设置了一个较小的图像,如下图所示的红色方块。我试图找出如何在更大的黄色方框中设置图像,但我找不到任何区分两者的文档。

编辑

vint下面的回答澄清了较小的图标是应用程序图标。但是,我正在成功地设置nowPlayingInfo字典,因为我的其他元数据正在到达锁定屏幕控件,如标题(模糊)、持续时间、经过的播放时间)。只是艺术品似乎不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-07 21:45:18

为了防止有人发现这个问题,并像我自己一样疯狂,我能够通过正确地将我的UIImage调整为赋予MPMediaItemArtwork回调函数的传入的size参数来设置图像。就像文档里说的

请求处理程序返回一个新请求大小的图像。请求的大小必须小于boundsSize参数。

然后使用以下扩展将我的image设置为传入的size参数,最终成功地设置了MPMediaItemPropertyArtwork

代码语言:javascript
复制
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)
    }
}
票数 5
EN

Stack Overflow用户

发布于 2021-02-05 09:45:24

显然,您没有成功地将轨道的封面图像设置为MPNowPlayingInfoCenter,红色方格中的图像是应用程序图标,这是MPNowPlayingInfoCenter的默认行为,

我想你失去了下一步

代码语言:javascript
复制
// set the info dictionary back to default control center
MPNowPlayingInfoCenter.default.nowPlayingInfo = nowPlayingInfo

如果您已经设置了它,您应该找到失败的原因,播下这个答案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66056233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档