【问题标题】:How to load specific image from assets with Swift [duplicate]如何使用 Swift 从资产中加载特定图像 [重复]
【发布时间】:2015-06-04 01:55:35
【问题描述】:

我是 Swift 新手,我想从资产中加载特殊图像。例如我有:

image 1 for iphone 4s = green-square@2x.png
image 2 for iphone 5/5s = green-square-Retina@2x.png
image 3 for iphone 6s = green-square@3x.png

我想为 iphone 6 加载一个特定的图像,例如

self.GSquare = SKSpriteNode(imageNamed: "./Images.xcassets/green-square-Retina@2x.png")

有可能吗?

【问题讨论】:

  • 你只需要"green-square-Retina"
  • 不,它使用 3 张不同大小的图像加载即时消息
  • Images.xcassets 中的图像名称是什么?

标签: ios image swift size assets


【解决方案1】:

@2x@3x不能直接加载图片,系统会自动选择合适的图片,使用UIImage指定名称即可:

UIImage(named: "green-square-Retina")

【讨论】:

  • “green-square-Retina”不加载
  • 确保它在那里并且有png扩展
  • 是的,它在那里,它为 iphone 5/5s 自动加载,但我也想为 iphone 6 使用它,因为 iphone 6 加载 iphone 4s 图像大小,所以我已经对当前屏幕大小进行了检测所以我可以知道当前使用的设备是 iphone 6,然后我加载视网膜图像
  • 这是正确的行为,@3x 仅适用于 iPhone 6 Plus。如果您想强制加载其他图像,请在运行时确定设备类型并使用具有其他名称的不同图像,但这不是好方法
  • 这就是为什么我想知道是否有可能直接执行此操作,因为如果我为每个图像执行另一个图像,我的应用程序会变得更重
【解决方案2】:

从 swift 3.0 开始有更方便的方法:#imageLiterals here 是文本示例。下面是来自here的动画示例:

【讨论】:

  • 提供良好实践的唯一答案!
  • 对于 2019 年 5 月,您必须双击 Image Literal 选项插入的符号。这将打开您的资产列表
  • 也许只有我一个人,但使用#imageLiteral 会使代码完全不可读
【解决方案3】:

您可以在没有UIImage(named: "green-square-Retina") 的情况下轻松地从资产中挑选图像。

而是直接使用 bundle 中的图像对象。
开始输入图像名称,您将获得包含来自捆绑包的实际图像的建议。这是可取的做法,不易出错。

请参阅this Stackoverflow 答案以供参考。

【讨论】:

    猜你喜欢
    • 2011-11-30
    • 2019-08-14
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 2021-11-23
    • 2015-07-11
    • 2013-07-29
    相关资源
    最近更新 更多