【问题标题】:Converting MPMediaItemArtwork from iOS 10 to iOS 9将 MPMediaItemArtwork 从 iOS 10 转换为 iOS 9
【发布时间】:2018-01-01 16:26:18
【问题描述】:

我正在通过执行以下操作在控制中心更新专辑封面:

let image:UIImage = UIImage(named: title)!
let artwork = MPMediaItemArtwork.init(boundsSize: image.size, requestHandler: { (size) -> UIImage in

            return image

        })

这在 iOS 10 中完美运行,但我希望我的应用同时允许 iOS 9 和 10 用户。每当我这样做时,我都会收到一条错误消息

init(boundsSize:requestHandler:) 仅适用于 iOS 10 或更新版本

所以,我需要把我的代码改成这个

let image:UIImage = UIImage(named: title)!
        if #available(iOS 10.0, *) {
            let artwork = MPMediaItemArtwork.init(boundsSize: image.size, requestHandler: { (size) -> UIImage in
                return image
            })
        } else {
            // What goes here??
        }

我不知道如何在 iOS 9 中执行此操作。我将如何执行此操作?

【问题讨论】:

标签: swift ios9 ios10 mpmediaitem


【解决方案1】:

您应该在 iOS 9 上使用 MPMediaItemArtwork(image: image)。

var artwork:MPMediaItemArtwork!
if let image = UIImage(named: imageName) {
    if #available(iOS 10.0, *) {
        artwork = MPMediaItemArtwork.init(boundsSize: image.size, requestHandler: { (size) -> UIImage in
            return image
        })
    } else {
        artwork = MPMediaItemArtwork(image: image)
    }
}
//use artwork here

【讨论】:

    【解决方案2】:

    在 iOS 10 之前,MPMediaArtwork 的初始值设定项除了简单的init() 之外,还是init(image:)

    【讨论】:

    • 好的,但是我需要创建一个变量artwork。我试过做var artwork = MPMediaItemArtwork(),但我不能这样做,因为init() is unavalible有什么想法吗?
    • 让我直说。我说初始化程序是init(image:)。你没有尝试过,你在抱怨你所做的尝试没有奏效。真的吗?
    • 我确实尝试过,实际上。问题是我需要artwork 的变量。所以,我的代码需要是artwork = MPMediaItemArtwork(image: image)
    • 您需要子类 MPMediaItemArtwork 以便您可以返回不同的图像。但这不是你问的问题。一个 x-y 问题。 — 无论如何,这不是 MPMediaItemArtwork 的工作方式。如果你想要不同的图像,你需要不同的 MPMediaItemArtwork 实例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    相关资源
    最近更新 更多