如何制作iOS资产包?

时间:2011-02-03 15:41:22

标签: ios bundle assets

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

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

我该如何解决这个问题?我检查了文档,但没有看到如何实际创建包的解释。

7 个答案:

答案 0 :(得分:92)

答案非常简单

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

拖入Xcode - 成功!

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

答案 1 :(得分:35)

如何创建捆绑

  1. 在finder中创建一个文件夹。
  2. 将文件添加到文件夹
  3. 重命名该文件夹,使其扩展名为.bundle(例如"新文件夹" - >" BundleName.bundle")
  4. PS:您可以随时右键单击该文件夹并点击"显示包内容"为了添加,删除或修改任何文件。

    如何将捆绑包添加到Xcode

    1. 将其拖入Xcode
    2. 如何使用捆绑

      NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"BundleName" ofType:@"bundle"];
      NSBundle *bundle = [NSBundle bundleWithPath:bundlePath]; 
      NSString *resource = [bundle pathForResource:@"fileName" ofType:@"fileType"];
      

      (用适当的名称替换BundleNamefileNamefileType

答案 2 :(得分:25)

另外两个有用的建议:

首先,为了在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];

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

最后,您不需要将资源放在捆绑包内的“Resources”子文件夹中。您似乎可以使用任意布局,但可能会有未知的性能影响。

答案 3 :(得分:10)

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

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

NSString *imgName = @"bundlename.bundle/my-image.png";
UIImage *myImage = [UIImage imageNamed:imgName]; 

答案 4 :(得分:1)

关于在XCode项目中捆绑和读取文件的说明

步骤:

  1. 创建一个test.txt文件并将文本“testing✌️”添加到其中,然后将其放在名为test.bundle的文件夹中
  2. 将其拖放到xcode(copy)
  3. 中的.app文件旁边
  4. 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.txt
  5. 实施例

    print(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
        }
    }
    

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

创建可加载的捆绑包项目就像创建应用程序一样-您只需要选择适当的项目模板即可。要创建可加载的捆绑包项目,请执行以下步骤:

  1. 启动Xcode。
  2. 从“文件”菜单中选择“新项目”。
  3. 从模板列表中,选择Cocoa Bundle。
  4. 单击下一步。
  5. 选择项目的位置,然后单击“完成”。

构建并运行,在Xcode中,您将在Project Navigator的Products文件夹中看到捆绑文件。右键单击该捆绑包,然后选择“在Finder中显示”。