为什么我必须将Bundle资源复制到主项目才能在框架中使用图像?

时间:2018-11-16 09:14:21

标签: ios swift sdk frameworks

现在我有一个嵌入到主项目中的SDK项目,并且我想使用SDK项目中捆绑包中的图像源,这是我的方法:

    let bdpath = Bundle.main.path(forResource: "AltynBankResource", ofType: "bundle")
    print("bundlePath:\(bdpath)")
    let bd = Bundle(path: bdpath ?? "")
   print("bundle:\(bd)")
    let img = UIImage.init(named: "ic_bg1", in: bd, compatibleWith: nil)
    print("img:\(img)")

,它不起作用。直到我将捆绑软件源复制到主项目。

但是我不明白为什么,我不是在主项目中使用图像,而是在SDK文件中使用图像。为什么必须将捆绑软件源复制到主项目才能使用它?

1 个答案:

答案 0 :(得分:0)

您面临的问题是您正在将主捆绑包与Bundle.main配合使用,这将占用您的应用捆绑包。

我假设这段代码在您的SDK中。我通常要做的是在Objective-C中将[NSBundle bundleForClass:[self class]]与SDK捆绑在一起。

在swift3.x中是:

Bundle(for: type(of: self))

但是我无法为您提供swift的示例,因为我没有在swift中使用这一行代码。

希望这会有所帮助。