我在评估过的iOS项目中看到了一个自定义资产包,所以至少我知道这是可能的。
我的问题是,对于给定的镜像,我使用的CATiledLayer大约有22,000个瓦片,编译它需要很长的时间(半个小时干净的构建,5-10分钟的常规构建)。所以,我想把所有的图片做成一个自定义的包,让它变得可移植,希望不会每次都重新编译到应用包中。
我该怎么做呢?我检查了文档,但没有看到关于如何实际创建包的解释。
发布于 2011-03-12 03:32:39
答案非常简单
在finder中创建一个文件夹,向其中添加文件,将其重命名为bundlename.bundle
拖动到Xcode - success!
要进行访问,请使用PathToMainBundle+"/bundlename.bundle“形式
发布于 2014-05-27 16:26:28
如何创建捆绑包
.bundle (例如"New folder“-> "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替换为适当的名称)
发布于 2011-11-19 20:50:01
另外两条有用的建议:
首先,为了在Xcode中查看bundle的内容,您需要在File Inspector Utility窗格中将其类型设置为"Application Bundle“。您仍然不能通过Xcode来回复制。您需要使用Terminal,但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需要与你的实际文件的大小写相匹配,才能在设备上工作。它可以在模拟器中以任何一种方式工作,所以不要被这个转移注意力的问题所蒙蔽!
最后,您不需要将资源放在捆绑包内的" resources“子文件夹中。看起来你可以使用任意的布局,但可能会有未知的性能影响。
https://stackoverflow.com/questions/4888208
复制相似问题