MPMediaItemArtwork init(图片:)在iOS 10.0中弃用

问题描述:

苹果已弃用init(image:)方法MPMediaItemArtwork在iOS 10中。 什么是新的替代方案。MPMediaItemArtwork init(图片:)在iOS 10.0中弃用

类的显示界面显示如下方法可用在新的操作系统版本

public init(boundsSize: CGSize, requestHandler: @escaping (CGSize) -> UIImage) 

任何人都知道如何使用它?

还质疑2,前面的问题的一部分:是否显示现在玩元使用MPNowPlayingInfoCenter工作在模拟器锁屏和控制中心吗?

您可以使用下面的代码:

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

而且,是的,“现在玩”元数据显示在模拟器中的控制中心。

+0

你可以对这个MPMediaItemArtwork初始化器使用的“为什么”和“如何”(地狱......)有所了解吗?这个街区有什么期望?以所提供的大小返回UIImage?我在网上搜索,无法获得合理的文档。 –

+1

@MottiShneor需要各种尺寸的图像 - 控制中心,锁屏,扩展控制中心,iPhone,iPad。如果您的媒体有不同大小的图稿,则可以在iOS请求时返回适当的媒体。 –

+0

但是无论大小如何,您都会一次又一次返回相同的图像?将图像的大小调整为适合?这是否可以接受? –

我刚才看到了这一点,我很困惑过,但我想这是正确的做法:

self.remoteArtwork = [[MPMediaItemArtwork alloc] initWithBoundsSize:CGSizeMake(600, 600) requestHandler:^UIImage * _Nonnull(CGSize size) { 

    UIImage *lockScreenArtworkApp = [UIImage imageNamed:@"lockScreenLogo"]; 

    return [self.manager resizeImageWithImage:lockScreenArtworkApp scaledToSize:size];   
}]; 

的方法 - 在我的单身“经理”的情况下-Class

- (UIImage *)resizeImageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 
    //UIGraphicsBeginImageContext(newSize); 
    // In next line, pass 0.0 to use the current device's pixel scaling factor (and thus account for Retina resolution). 
    // Pass 1.0 to force exact pixel size. 
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
}