如何制作iOS资产包?

mic*_*ael 55 bundle assets ios

我在我评估的iOS项目中看到了一个自定义资产包,所以至少我知道它是可能的.

我的问题是我使用的CATiledLayer对于给定的图像大约有22,000个图块,编译需要很长时间(半小时清理版本,常规版本需要5-10分钟).因此,我希望获取所有图像并制作自定义包以使其可移植,并且希望每次都不会重新编译到应用程序包中.

我该怎么做?我检查了文档,但没有看到如何实际创建包的解释.

mic*_*ael 95

答案很简单

在finder中创建一个文件夹,向其中添加文件,将其重命名为bundlename.bundle

拖入Xcode - 成功!

访问,使用PathToMainBundle +"/ bundlename.bundle"的形式

  • 对我不起作用.我无法访问资产包中的文件,因为没有加载包,当我加载包时,我收到一条错误,说无法加载包,因为无法找到它的可执行文件. (4认同)
  • @michael,同意,但是如果这“只是一个文件夹”,那么这里就不会发生任何事情。换句话说,你对捆绑包的定义和期望是什么?如果您只想将一个文件夹拖到 Xcode 中以包含在应用程序中,则无需使用“.bundle”后缀重命名即可完成此操作。 (2认同)
  • @michael 我的目标不是让你难受。我一直在寻找是否有办法在 iOS 中_真正_加载_真正_包,并被你的问题和答案(以及此处的其他答案)误导了很长时间。我的评论是为了警告其他人。您的代码没有执行您所描述的操作(在我看来)。它只是以完全正常的方式引用一个文件夹。 (2认同)

hfo*_*sli 37

如何创建一个包

  1. 在finder中创建一个文件夹.
  2. 将文件添加到该文件夹
  3. 重命名文件夹以使其扩展名为.bundle(例如"New folder" - >"BundleName.bundle")

PS:您可以随时右键单击该文件夹并点击"显示包内容"以添加,删除或修改任何文件.

如何将捆绑包添加到Xcode

  1. 将其拖入Xcode

如何使用捆绑

NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"BundleName" ofType:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:bundlePath]; 
NSString *resource = [bundle pathForResource:@"fileName" ofType:@"fileType"];
Run Code Online (Sandbox Code Playgroud)

(替换BundleName,fileNamefileType使用适当的名称)


Har*_*ngh 26

另外两个有用的建议:

首先,为了在XCode中查看包的内容,您需要在File Inspector Utility窗格中将其类型设置为"Application Bundle".您仍然无法通过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];
Run Code Online (Sandbox Code Playgroud)

正如我在上面的评论中所提到的,你不需要实际加载bundle(你不能因为它不可执行)以及ofType需要匹配你的实际文件的情况才能在设备上工作.它将在模拟器中以任何方式工作,所以不要被这个红鲱鱼欺骗!

最后,您不需要将资源放在bundle中的"Resources"子文件夹中.您似乎可以使用任意布局,但可能会有未知的性能影响.


Lan*_*tly 10

以下是我如何使用它:在XCode中创建一个新文件 资源| 设置捆绑.然后在Finder中选择该包并选择"显示包内容",并添加任何图像文件.

然后在代码中以这种方式引用图像:

NSString *imgName = @"bundlename.bundle/my-image.png";
UIImage *myImage = [UIImage imageNamed:imgName]; 
Run Code Online (Sandbox Code Playgroud)


kga*_*dis 5

以下是创建资产或资源包(例如)的步骤FrameworkResources.bundle- 令人惊讶的是,它并不明显。如果您正在创建静态框架,这尤其有用。

  1. 在 Xcode 中按文件 -> 新建 -> 目标
  2. 选择“macOS”选项卡,搜索“捆绑包”
  3. 点击“捆绑” -> 单击“下一步” -> 输入产品名称“MyResources” -> 点击“完成”
  4. 转到新创建的捆绑包的“构建设置”。将“Base SDK”( SDKROOT) 更改为“iOS”
  5. 转到新创建的捆绑包的“构建阶段”。删除“编译源”和“将二进制文件与库链接”(这将删除捆绑包中的可执行文件,这可能会导致各种构建和应用程序提交错误)