我看到的是iOS项目,我评估了自定义资产捆绑,所以至少我知道这是可能的。
我的问题是,我使用的是CATiledLayer与约22000瓦对于给定的图像,它需要很长的时间来编译(小时干净的构建半,5-10分钟常规版本)。所以,我希望把所有的图像,并进行自定义捆绑,使其便携和希望不是重新编写应用程序软件包中的每个时间。
我怎么去呢?我查了文档,但没有看到如何实际创建包的解释。
答案是太简单
使文件夹在Finder中,将文件添加到它,它重命名为bundlename.bundle
拖到Xcode中 - 成功!
访问,使用PathToMainBundle +“/ bundlename.bundle”的形式
如何创建包
.bundle
(例如“新文件夹” - >“BundleName.bundle”)PS:您可以随时右键单击该文件夹,以添加,删除或修改任何文件打“显示包内容”。
如何添加捆的Xcode
如何使用捆绑
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"BundleName" ofType:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];
NSString *resource = [bundle pathForResource:@"fileName" ofType:@"fileType"];
(更换BundleName
,fileName
和fileType
带合适的名称)
两点建议其他有用位:
首先,为了看XCode中,你需要将其类型在文件检查器工具窗格中的包的内容,以“应用程序包”。你仍然无法通过的XCode复制到从。你需要使用终端,但是了XCode会立即更新。
第二,为了在捆绑使用资源这里是一个有用的片段......
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"AquarianHarp" ofType:@"bundle"];
NSString *imageName = [[NSBundle bundleWithPath:bundlePath] pathForResource:@"trebleclef2" ofType:@"png"];
UIImage *myImage = [[UIImage alloc] initWithContentsOfFile:imageName];
正如我在评论上面提到的,你实际上不需要加载包(你不能因为它不是可执行文件)和ofType
需要你的实际文件的情况下匹配它的设备上运行。它会工作,要么方式模拟器所以不要这个红鲱鱼上当!
最后,你不需要把你的资源在里面捆绑“资源”子文件夹。看来你可以使用任意布局,但有可能是未知的性能影响。
以下是我得到这个工作:在Xcode中创建一个新的文件|资源| Settings程序包。然后在Finder中选择该包,然后选择显示包内容,并添加任何图像文件。
然后,在代码中引用的图像是这样的:
NSString *imgName = @"bundlename.bundle/my-image.png";
UIImage *myImage = [UIImage imageNamed:imgName];
我在一个XCode项目捆绑和读取文件笔记
print(Bundle.main.resourcePath!+"/temp.bundle/test.txt")
输出:/Users/James/Library/Developer/Xcode/DerivedData/GitSyncMac-heiwpdjbtaxzhiclikjotucjguqu/Build/Products/Debug/GitSyncMacApp.app/Contents/Resources/temp.bundle/test.txtprint(content(Bundle.main.resourcePath!+"/temp.bundle/test.txt"))// testing✌️
static func content(_ path:String)->String?{
do {
let content = try String(contentsOfFile:path, encoding:String.Encoding.utf8) as String//encoding: NSUTF8StringEncoding
return content
} catch {
return nil
}
}
下面是创建一个资产或资源包的步骤(例如FrameworkResources.bundle
) - 这是令人惊讶的非显而易见的。如果要创建静态框架这是非常有用的。
SDKROOT
)为“iOS版”