【问题标题】:How to Set Artwork Image for MPNowPlayingInfoCenter如何为 MPNowPlayingInfoCenter 设置艺术品图像
【发布时间】:2021-02-05 01:15:02
【问题描述】:

我一直在尝试使用MPMediaItemPropertyArtwork 更新在MPNowPlayingInfoCenter 中显示的项目的艺术品,如下面的代码所示来自Apple's docs

if let image = UIImage(named: "image_here") {
    nowPlayingInfo[MPMediaItemPropertyArtwork] =
        MPMediaItemArtwork(boundsSize: image.size) { size in
            return image
    }
}

我遇到的问题是,这会设置一个较小的图像,如下图红色方块所示。我试图弄清楚如何将图像设置在较大的黄色方块中,但我找不到任何可以区分两者的文档。

编辑

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

【问题讨论】:

    标签: ios swift xcode mpmediaitem


    【解决方案1】:

    以防万一有人发现这个问题并且像我一样发疯,我可以通过将我的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)
        }
    }
    
    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)
        }
    }
    

    【讨论】:

      【解决方案2】:

      显然您没有成功将曲目的封面图片设置为 MPNowPlayingInfoCenter,红色方块中的图片是你的应用图标,这是MPNowPlayingInfoCenter的默认行为,

      我猜你失去了下一步

      // set the info dictionary back to default control center
      MPNowPlayingInfoCenter.default.nowPlayingInfo = nowPlayingInfo
      

      如果你设置了,你应该找到失败的原因,seed this answer

      【讨论】:

      • 感谢回复,不知道小图标是app图标。这很有帮助。不过我有那个字典。我可以更新其他所有内容(例如,您可以在屏幕截图中看到的 MPNowPlayingInfoPropertyElapsedPlaybackTime 和 MPMediaItemPropertyPlaybackDuration 以及 MPMediaItemPropertyTitle。我只是模糊了标题)。除 MPMediaItemPropertyArtwork 之外的所有属性都已设置。我会关注其他答案,看看它是否有助于解决问题。
      猜你喜欢
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多