【问题标题】:How to add GIF images to Assets folder and load them in UIImageView programmatically如何将 GIF 图像添加到 Assets 文件夹并以编程方式将它们加载到 UIImageView
【发布时间】:2018-05-08 04:18:00
【问题描述】:

我正在尝试将我的 @2x 和 @3x GIF 图像放入 Xcode 的 Assets 文件夹中。我已经尝试了以下链接,但它对我不起作用。 Link 1Link 2

我目前正在加载 GIF 文件,方法是将它们添加到我的项目包并使用它访问它

let bundleURL = NSBundle.mainBundle()
            .URLForResource("phone_animation", withExtension: "gif") 

但我想从我的 Assets 文件夹中加载它们。有什么办法可以做到吗?以及如何将它们添加到 Assets 后将它们加载到我的 imageview 中?

【问题讨论】:

    标签: ios uiimageview animated-gif xcasset swift2.3


    【解决方案1】:

    要将 gif 加载到 UIImage 中,我建议使用两个库

    1) 你可以使用这个library

    只需将其加载到 UIImageView 中即可

    let imageData = try! Data(contentsOf: Bundle.main.url(forResource: "logo-animation", withExtension: "gif")!)
    let gifImage = UIImage.gif(data: data!)
    imageView.image = gifImage
    

    2) 或者你可以使用这个library

    import FLAnimatedImage
    

    然后添加插座

    @IBOutlet weak var fashImage: FLAnimatedImageView!
    

    然后使用此代码

    let imageData = try! Data(contentsOf: Bundle.main.url(forResource: "logo-animation", withExtension: "gif")!)
    fashImage.animatedImage = FLAnimatedImage(animatedGIFData: imageData)
    

    希望对你有帮助

    【讨论】:

    • 我只想从 Assets 文件夹中加载 GIF
    • 直接给出资产中的 gif 名称
    • @Ganesh 库似乎不支持资产名称,仅支持来自 bundle 的完整路径
    • @AndreaMugnaini 库将支持资产名称检查清楚
    • @Ganesh 我又检查了一遍,根据这个:github.com/bahlo/SwiftGif/blob/master/SwiftGifCommon/… UIImage 只能从以下位置初始化:Data,url as String,或 bundleURL as String。因此无法使用 *.xcassets 中的资源此外,您可以尝试制作一个测试项目并查看您将收到: SwiftGif: This image named "YOUR_GIF_NAME" does not exist
    【解决方案2】:

    根据您的评论,这是您正在搜索的解决方案:

    1. 制作一个使用 SwiftGif 的 UIImage 扩展:

      extension UIImage {
        public class func gif(asset: String) -> UIImage? {
          if let asset = NSDataAsset(name: asset) {
             return UIImage.gif(data: asset.data)
          }
          return nil
        }
      }
      
    2. 然后使用扩展程序调整@Ganesh 建议,您可能会执行以下操作:

      imageView.image = UIImage.gif(asset: "YOUR_GIF_NAME_FROM_ASSET")
      

    【讨论】:

    • 谢谢,正是我需要的。虽然不可能在同一个数据集中添加 2x 和 3x GIF 是吗?
    • @Amogh 我猜应该可以(我在本地测试中试过)
    • 你做得怎么样?我正在使用 xcode 7.3,但没有选择将另一个 GIF 添加到同一数据集
    • 我正在运行 Xcode9,我有可能添加 1、2、3x。检查是否为“图像集/比例”选择了“个人比例”
    • 能否告诉我您的 Contents.json 文件中的代码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2019-09-17
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    相关资源
    最近更新 更多