gpt4 book ai didi

ios - 无法从我的项目中的框架加载图像

转载 作者:搜寻专家 更新时间:2023-10-31 22:10:32 25 4
gpt4 key购买 nike

我的项目结构是这样的,我有 2 个名为 ProjectAProjectB 的项目。现在,对于这两个项目,我创建了一个名为 ProjFramework 的框架。

我在framework里面添加了这2个项目的公共(public)文件,然后分别在projects里面添加framework。到目前为止,我可以访问所有文件和变量。现在我也在框架中添加了图像,当我尝试在 UI 中显示它们时,我收到一条错误消息,提示 unable to read this .png

据我所知,我需要以某种方式包含该框架,但我不知道如何。请帮助我分享常见图像 b/w 2 XCode 项目。

提前致谢。

最佳答案

@arunjos007 方法的替代方法是 (a) 创建图像包,然后 (b) 从包中检索。

假设您有一个名为 Kernel 的框架,并且您希望访问两种类型的文件 - cikernelpng

创建 bundle :

  • 将所有文件/图像移动到桌面上的新文件夹中。随心所欲地命名。在我的示例中,我将它们命名为 cikernelsimages

  • 使用 .bundle 扩展名重命名您的文件夹。在我的示例中,它们变成了 cikernels.bundleimages.bundle。您将看到下面的警告...选择“添加”。

Bundle warning

  • 将 bundle 拖到您的框架项目中。您可以展开 bundle 以查看内容。此外,您还可以添加/删除/编辑 bundle 的内容。

从包中检索文件:

我创建了两个公共(public)函数,一个用于检索文件,一个用于检索图像。它们几乎相同,除了 (a) 返回类型和 (b) 错误处理。 (我可能应该向 UIImage 函数添加一些 - 但由于我对代码有完全控制 - 它不会被其他任何人使用 - 这并不重要。)

public func returnImage(_ named:String) -> UIImage {
let myBundle = Bundle.init(identifier: "com.companyName.frameworkName")
let imagePath = (myBundle?.path(forResource: "images", ofType: "bundle"))! + "/" + named
let theImage = UIImage(contentsOfFile: imagePath)
return theImage!
}

public func returnKernel(_ named:String) -> String {
let myBundle = Bundle.init(identifier: "com.companyName.frameworkName")
let kernelPath = (myBundle?.path(forResource: "cikernels", ofType: "bundle"))! + "/" + named + ".cikernel"
do {
return try String(contentsOfFile: kernelPath)
}
catch let error as NSError {
return error.description
}
}

最后一点:标识符 是在框架目标的常规 选项卡中定义的。通常采用 com.companyframework* 的形式。将该行更改为您的行。

关于ios - 无法从我的项目中的框架加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47157060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com