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

标签 ios swift sdk frameworks

现在我有一个嵌入主项目中的SDK项目,我想使用SDK项目中的 bundle 中的图像源,这是我的方法:

    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)")

但它不起作用。直到我将 bundle 源复制到主项目。

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

最佳答案

您面临的问题是您正在将主 bundle 与 Bundle.main 一起使用,这将占用您的应用程序的 bundle 。

我假设这段代码位于您的 SDK 中。我通常做的是在 Objective-C 中使用 [NSBundle bundleForClass:[self class]] 获取 SDK 的 bundle 。

在 swift3.x 中是:

bundle (for:type(of:self))

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

希望这有帮助。

关于ios - 为什么我必须将 Bundle 资源复制到主项目才能在框架中使用图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53334691/

相关文章:

android - Linking.getInitialURL() 在用于深度链接后未被清除

ios - 当用户点击图表时添加点 - 'LineChartView' (iOS-Charts)

ios - 以不同的速率调整多个 UIView 的大小

ios - viewDidLoad() 中的 addSubView() 和 BringSubViewToFront() 不起作用

ios - Facebook SDK 3.1 - com.facebook.sdk 使用 [facebook 授权 :permissions] 进行身份验证时出现错误 5

javascript - 如何创建一个 java 脚本库 - 从头开始​​跟踪用户在网站上的操作?

ios - 覆盖 UITableViewController 子类中的 cellForRowAtIndexPath 返回错误 : does not override any method from superclass

ios - evaluateJavaScript() with Error Domain=NSCocoaErrorDomain Code=3840 仅在 iPhone 5 - iOS 10.3.3

ios - 翻转并替换 UIView

visual-studio-2010 - 构建英特尔媒体 SDK Directshow 示例 : "Cannot open include file: ' streams. h':没有这样的文件或目录”