【问题标题】:Swift - Pod images not loading (not found, returns nil)Swift - Pod 图像未加载(未找到,返回 nil)
【发布时间】:2015-11-29 13:17:12
【问题描述】:

我已经按照 CocoaPods 网站上的说明创建了一个新的 pod 组件。现在我的 Pod 中有以下结构:

  • Pod(文件夹)

    • 我的组件(文件夹)

      • MyComponent.swift

      • 资源(文件夹)

        • name_of_image.png

但是,当我尝试调用时:

UIImage(named: “name_of_image”)

从 MyComponent.swift,我得到一个“nil”返回。

我已经阅读了包括为我的组件创建捆绑包的解决方案,但我还没有找到合适的方法来自己生成它。任何建议都会很好。

谢谢

【问题讨论】:

    标签: swift cocoapods


    【解决方案1】:

    您不能(不应该)在 Pod 中使用 UIImage(named:)。这将从您的应用而不是 Pod 加载图像。

    您需要先获取 Pod 的 NSBundle,然后使用它来加载图像。您可以使用 Pod 中的任何类获取 NSBundle

    let bundle = NSBundle(forClass: ClassFromYourPod.self)
    let image = UIImage(named: "xyz", inBundle: bundle, compatibleWithTraitCollection: nil)
    

    【讨论】:

    • 感谢您的提示。但是,它仍然没有解决我的问题,因为 UIImage 仍然为零。正如我所说,我在 Pod 的任何地方都没有 MyClassName.bundle。我只有一个 Resources 文件夹和其中的图像。
    • 你的 Pod 包。每个 Pod 都是它自己的捆绑包。您需要 Pod 中的类(一个真正的类,而不是捆绑文件!)以便 Objective-C 可以找到您的 Pod 的 NSBundle
    • 这对我有用。 @Armin,您可能希望在 您的 pod 中创建一个包装类,例如:class Image { let bundle = NSBundle(forClass: Image.self); let image = UIImage(named: "yourImage.png", in bundle: bundle, compatibleWithTraitCollection: nil)}
    【解决方案2】:

    如果您直接导入 png 而不使用 xcassets,这对我有用

        let bundle = Bundle(for: ClassInsidePod.self)
        let image = UIImage(named: "YourImageName", in: bundle, compatibleWith: nil)
        imageView.image = image
    

    但是,如果您在 Example 项目中进行测试,则需要使用 pod update 更新该项目中的 pod。就我而言,在这样做之前,它总是返回nil

    【讨论】:

    • 确认。至于我,pod update 也解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 2016-09-28
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 2021-03-18
    相关资源
    最近更新 更多