gpt4 book ai didi

ios8 - 如何在 iOS 8 中创建和使用 UIImageAsset

转载 作者:行者123 更新时间:2023-12-02 01:08:36 25 4
gpt4 key购买 nike

iOS 8 引入了一个带有方法 registerImage:withTraitCollection: 的 UIImageAsset 类。我该如何使用这个类?

最佳答案

通常情况下,您不必这样做。相反,您将使用 Assets 目录。 iOS 8 中的 UIImageAsset 只是 Assets 目录中图像集的底层机制。

例如,在 iOS 8 中, Assets 目录可以区分用于不同尺寸类别情况的图像版本,使用“宽度”和“高度”弹出菜单来指定不同尺寸类别的可能性。然后,当您在界面中使用 Assets 目录中的图像时,正确的事情会自动发生。如果我们使用的是 iPhone,且应用程序旋转为横向,并且图像集中同时存在“任意高度”和“紧凑高度”替代方案,则将使用“紧凑高度”版本。这些功能都是实时的;如果应用从横向旋转到纵向,并且图像集中同时存在“任意高度”和“紧凑高度”替代方案,则界面中的“紧凑高度”版本将替换为“任意高度”版本,自动

您会注意到我没有提到 UIImageAsset。然而,UIImageAsset 是底层机制。当通过init(named:)从 Assets 目录中提取图像时及其图像集的名称,其 imageAsset属性是 UIImageAsset。该图像集中的所有图像都可以通过 UIImageAsset 获得;每个图像都有一个与其关联的特征集合(其 traitCollection ),您可以通过调用 imageWithTraitCollection: 向 UIImageAsset 询问适合特定特征集合的图像。 。事实上,这正是界面为您所做的事情。在 iOS 8 中,可以显示图像的界面对象会自动识别特征收集;它收到 traitCollectionDidChange:消息并做出相应响应。

但是,可以将图像组合到您自己的 UIImageAsset 中。在某种程度上,这就像用代码制作 Assets 目录(或至少是图像集)!在此示例中,我将从应用程序包中获取两张图像,并对它们进行配置,以便在应用程序处于纵向方向时自动使用一张图像,而在应用程序处于横向方向时自动使用另一张图像:

let tcdisp = UITraitCollection(displayScale: UIScreen.mainScreen().scale)
let tcphone = UITraitCollection(userInterfaceIdiom: .Phone)
let tcreg = UITraitCollection(verticalSizeClass: .Regular)
let tc1 = UITraitCollection(traitsFromCollections: [tcdisp, tcphone, tcreg])
let tccom = UITraitCollection(verticalSizeClass: .Compact)
let tc2 = UITraitCollection(traitsFromCollections: [tcdisp, tcphone, tccom])
let moods = UIImageAsset()
let frowney = UIImage(named:"frowney")
let smiley = UIImage(named:"smiley")
moods.registerImage(frowney, withTraitCollection: tc1)
moods.registerImage(smiley, withTraitCollection: tc2)

之后,如果 frowney被放置到界面中 - 例如,通过将其传递给 UIImageView 作为其图像,或者通过将其指定为 UIButton 的图像 - 它自动smiley 交替。当应用程序改变方向时。

值得注意的是,即使没有持续引用 frowney,这个魔法仍然有效。 , smiley ,或 UIImageAsset ( moods )。原因是frowneysmiley被系统缓存(因为调用 init(named:) ),并且它们各自维护对其注册的 UIImageAsset 的强引用。

关于ios8 - 如何在 iOS 8 中创建和使用 UIImageAsset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25716128/

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