gpt4 book ai didi

swift - AppleTv/TvOS - 调整保存到 ImageURL 的 TVContentItems 中 TopShelf 图像的大小

转载 作者:搜寻专家 更新时间:2023-10-30 23:06:28 26 4
gpt4 key购买 nike

我正在 Apple tvOS 中实现 TopShelf。我已下载图像并分配给 TVContentItemsimageURL。下载的图像纵横比不适合 TopShelf 图像。我试图通过将宽度 + 高度附加到图像链接来更改大小。

www.mydownloadedimages.com/{宽度}x{高度}

但是没有用。

我可以用任何其他方式在客户端调整大小吗?在 TVContentItem 类中,我只有 NSURL 对象。没有 UIImage 对象。

非常感谢。

这是 Apple 关于图像大小和形状的文档

// ~ 2 : 3
// ~ 1 : 1
// ~ 4 : 3
// ~ 16 : 9
// ~ 8 : 3
// ~ 87 : 28


//@property imageShape
//@abstract A TVContentItemImageShape value describing the intended aspect ratio or shape of the image.
//@discussion For Top Shelf purposes: the subset of values which are //valid in this property, for TVContentItems in the topShelfItems property //of the TVTopShelfProvider, depends on the value of the topShelfStyle //property of the TVTopShelfProvider:


TVTopShelfContentStyleInset:

valid: TVContentItemImageShapeExtraWide

TVTopShelfContentStyleSectioned:

valid: TVContentItemImageShapePoster

valid: TVContentItemImageShapeSquare

valid: TVContentItemImageShapeHDTV

当此属性的值对 Top Shelf 样式无效时,系统保留以任何方式缩放图像的权利。

最佳答案

您说得对,TVContentItem 没有UIImage 类型属性。由于 TVContentItem 也接受 imageURL 属性中的本地文件 URL,解决方法可以是:

  • 从互联网上获取UIImage
  • 使用顶层货架图像的大小创建一个新的图像上下文
  • 将其保存到 NSCacheDirectory
  • 将本 map 片 URL 设置为 imageURL

步骤如下:

  1. 让我们创建我们的 TVContentItem 对象:

    let identifier = TVContentIdentifier(identifier: "myPicture", container: wrapperID)!
    let contentItem = TVContentItem(contentIdentifier: identifier )!
  2. 设置contentItemimageShape:

    contentItem.imageShape = .HDTV
  3. 从 Internet 抓取图像。实际上我是同步完成的,您也可以尝试使用其他异步方法来获取它(NSURLConnection、AFNetworking 等...):

    let data : NSData = NSData(contentsOfURL: NSURL(string: "https://s3-ak.buzzfed.com/static/2014-07/16/9/enhanced/webdr08/edit-14118-1405517808-7.jpg")!)!
  4. 准备保存图像的路径,并从 data 对象获取 UIImage:

    let filename = "picture-test.jpg"
    let paths = NSSearchPathForDirectoriesInDomains(.CachesDirectory, .UserDomainMask, true)
    let filepath = paths.first! + "/" + filename
    let img : UIImage = UIImage(data: data)!
  5. 假设您已经设置了 topShelfStyle 属性,使用方法 TVTopShelfImageSizeForShape 获取顶部货架图像的大小。这将是您的图像上下文的大小:

    let shapeSize : CGSize = TVTopShelfImageSizeForShape(contentItem.imageShape, self.topShelfStyle)
  6. 创建 shapeSize 大小的图像上下文并将下载的图像绘制到上下文矩形中。您可以在此处对图像进行所有修改,以将其调整为所需的大小。在此示例中,我从 Instagram 获取了一张方形图像,并在右侧和左侧放置了白色信箱带。

    UIGraphicsBeginImageContext(shapeSize)
    let imageShapeInRect : CGRect = CGRectMake((shapeSize.width-shapeSize.height)/2,0,shapeSize.height,shapeSize.height)
    img.drawInRect(imageShapeInRect)
    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
  7. 最后,将此图像保存到您的NSCacheDirectory 并将图像路径设置为contentItemimageURL

    UIImageJPEGRepresentation(newImage, 0.8)!.writeToFile(filepath, atomically: true)
    contentItem.imageURL = NSURL(fileURLWithPath: filepath)
  8. 使用其他详细信息(如标题、内部链接等...)完成您的 TVContentItem,运行顶层货架扩展...等等! tvOS Screenshot

关于swift - AppleTv/TvOS - 调整保存到 ImageURL 的 TVContentItems 中 TopShelf 图像的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35104516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com