如何使iOS的资产包?

问题描述 投票:54回答:6

我看到的是iOS项目,我评估了自定义资产捆绑,所以至少我知道这是可能的。

我的问题是,我使用的是CATiledLayer与约22000瓦对于给定的图像,它需要很长的时间来编译(小时干净的构建半,5-10分钟常规版本)。所以,我希望把所有的图像,并进行自定义捆绑,使其便携和希望不是重新编写应用程序软件包中的每个时间。

我怎么去呢?我查了文档,但没有看到如何实际创建包的解释。

ios bundle assets
6个回答
93
投票

答案是太简单

使文件夹在Finder中,将文件添加到它,它重命名为bundlename.bundle

拖到Xcode中 - 成功!

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


36
投票

如何创建包

  1. 创建取景器的文件夹。
  2. 文件添加到文件夹
  3. 重命名的文件夹,使得其延伸部是.bundle(例如“新文件夹” - >“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"];

(更换BundleNamefileNamefileType带合适的名称)


25
投票

两点建议其他有用位:

首先,为了看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需要你的实际文件的情况下匹配它的设备上运行。它会工作,要么方式模拟器所以不要这个红鲱鱼上当!

最后,你不需要把你的资源在里面捆绑“资源”子文件夹。看来你可以使用任意布局,但有可能是未知的性能影响。


10
投票

以下是我得到这个工作:在Xcode中创建一个新的文件|资源| Settings程序包。然后在Finder中选择该包,然后选择显示包内容,并添加任何图像文件。

然后,在代码中引用的图像是这样的:

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

1
投票

我在一个XCode项目捆绑和读取文件笔记

Steps:

  1. 创建一个test.txt文件,并添加文本“testing✌️”给它,然后把它放在一个文件夹命名test.bundle
  2. 拖动并在Xcode旁边的.app文件拖放(复印件)
  3. 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

Example:

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

0
投票

下面是创建一个资产或资源包的步骤(例如FrameworkResources.bundle) - 这是令人惊讶的非显而易见的。如果要创建静态框架这是非常有用的。

  1. 按文件 - >新建 - 在Xcode>目标
  2. 选择“MacOS的”选项卡上,搜索“捆绑”
  3. 点击“捆绑” - >点击“下一步” - >输入产品名称“为MyResources” - >点击“完成”
  4. 转到“生成设置”新创建的包。改变 “基地SDK”(SDKROOT)为“iOS版”
  5. 进入“构建阶段”新创建的包。删除“编译来源”和“链接二进制与图书馆”(这将删除捆绑包中的可执行文件,可引起各种构建和应用提交错误)
© www.soinside.com 2019 - 2024. All rights reserved.