【问题标题】:Use Images in a swift framework在 swift 框架中使用图像
【发布时间】:2021-04-23 21:17:54
【问题描述】:

我需要一张图片才能出现在框架中。我发现需要知道它所在应用程序的名称的唯一方法。还有其他方法可以将资产放入您的框架吗? (为了得到这个发布:

  • 我的后台搜索没有帮助)

【问题讨论】:

  • 为什么不能使用你的框架的名字?细节很重要。与应用程序一样,框架也有一个包名称。用那个。如果是第三方框架,请发布更多详细信息。
  • 1.我可以使用框架的名称,但不能使用我将嵌套的应用程序名称,这是我找到的唯一方法。
  • 2.最好为暗模式图片获得一个 xcasset(但不需要)

标签: swift frameworks


【解决方案1】:

大约 5 年前,我发布了 this answer。它包含两段代码,用于从框架包中提取资产。关键代码是这样的:

public func returnFile(_ resource:String, _ fileName:String, _ fileType:String) -> String {
    let identifier = "com.companyname.appname" // replace with framework bundle identifier
    let fileBundle = Bundle.init(identifier: identifier)
    let filePath = (fileBundle?.path(forResource: resource, ofType: "bundle"))! + "/" + fileName + "." + fileType
do {
    return try String(contentsOfFile: filePath)
}
catch let error as NSError {
    return error.description
}

如果你的框架需要知道两件事(app bundle 和 light/dark 模式)调整了这段代码怎么办?将identifier 移出以便应用可以访问,而不是此函数的本地。然后创建一个新变量(我认为这是最好的方法)或一个新函数,以使用基于亮或暗模式的正确资产集。

现在您的应用可以import 您的框架,并在其消费者中进行适当的设置。 (我没有尝试过,但理论上我认为它应该可以工作。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 2019-10-02
    相关资源
    最近更新 更多