4 xcode frameworks image ios swift
我的项目结构是这样的,我有 2 个名为ProjectA和 的项目ProjectB。现在,对于这两个项目,我创建了一个名为 的框架ProjFramework。
我将这两个项目的公共文件添加到框架中,然后分别在项目中添加框架。到目前为止,我可以访问所有文件和变量。现在我也在框架中添加了图像,当我尝试在 UI 中显示它们时,我收到一条错误消息,指出无法读取此 .png。
据我所知,我需要以某种方式包含该框架,但我不知道如何包含。请帮助我分享 2 个XCode项目的常见图像。
提前致谢。
小智 6
@arunjos007' 方法的替代方法是 (a) 创建图像包,然后 (b) 从该包中检索。
假设您有一个名为Kernel的框架,并且您希望访问两种类型的文件 - cikernel和png。
创建捆绑包:
将所有文件/图像移至桌面上的新文件夹中。随意命名。在我的示例中,我将它们命名为cikernels和images。
使用.bundle扩展名重命名您的文件夹。在我的示例中,它们变成了cikernels.bundle和images.bundle。您将看到下面的警告...选择“添加”。
从包中检索文件:
我创建了两个公共函数,一个用于检索文件,一个用于检索图像。除了 (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
}
}
Run Code Online (Sandbox Code Playgroud)
最后一点:标识符是在框架目标的“常规”选项卡中定义的。通常采用com.company Framework* 的形式。将该行更改为您的。