iOS SDK(二):Bundle 创建 & 使用

一般情况下,使用 bundle 文件来存档 SDK 使用的资源文件,如:图片、多语言文件、storyboard编译文件等。

bundle创建方式

方式一:

新建文件夹


新建文件夹

修改文件名,后缀为 .bundle:


修改文件名及后缀

这样,就创建了一个 bundle 文件,将资源放置进去就可以使用了。


得到bundle文件

方式二:

创建 bundle 工程


创建bundle工程1
创建bundle工程2

取名为 NiceBundle,此处的名字,即后面编译得到的 bundle 的名字


创建bundle工程3

为方便管理,将工程跟 Framework 工程放置到一起


创建bundle工程4

将支持类型设置为 iOS


设置为iOS1
设置为iOS2

设置最低支持版本和支持设备类型


最低支持版本和支持设备类型

编译得到 bundle 文件


编译

导入图片,编译一下


导入图片

可以发现,在 bundle工程中,图片放置在 image 文件夹下,编译后出现在 NiceBundle.bundle 根目录下,说明就算嵌套文件夹,编译后的资源文件都会在 bundle 文件根目录下。这个很重要,涉及到后面我们读取 bundle 文件的路径问题。

导入图片

同 Framework 工程一样,为方便管理,可以将其添加到 xcworkspace 中。

添加到 xcworkspace
添加到 xcworkspace

bundle资源读取

将 NiceBundle.bundle 导入 Demo 工程,编译,查看 bundle 文件处于应用的哪个位置


编译后 bundle 的位置

由此,可以根据 bundle 在使用时的路径,得到该如何读取的方式。

NSBundle+NiceSDKBundle.h

#import 

NS_ASSUME_NONNULL_BEGIN

@interface NSBundle (NiceSDKBundle)

+ (UIImage*)getNiceBundleImageWithName:(NSString*)name;

@end

NS_ASSUME_NONNULL_END

NSBundle+NiceSDKBundle.m

#import "NSBundle+NiceSDKBundle.h"

@implementation NSBundle (NiceSDKBundle)

+ (NSString*)sdkBundlePath{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"NiceBundle"
                                                           ofType:@"bundle"];
    return path;
}

+ (UIImage*)getNiceBundleImageWithName:(NSString*)name{
    NSString *path = [[self sdkBundlePath] stringByAppendingPathComponent:name];
    UIImage *image = [UIImage imageWithContentsOfFile:path];
    return image;
}

@end

可以看到,通过上面的方式,读取图片成功


图片获取成功

同理,其它类型的文件,也可以通过上面的方式进行读取。

看懂请随手点赞,朋友们!

你可能感兴趣的:(iOS SDK(二):Bundle 创建 & 使用)