一般情况下,使用 bundle 文件来存档 SDK 使用的资源文件,如:图片、多语言文件、storyboard编译文件等。
bundle创建方式
方式一:
新建文件夹
修改文件名,后缀为 .bundle:
这样,就创建了一个 bundle 文件,将资源放置进去就可以使用了。
方式二:
创建 bundle 工程
取名为 NiceBundle,此处的名字,即后面编译得到的 bundle 的名字
为方便管理,将工程跟 Framework 工程放置到一起
将支持类型设置为 iOS
设置最低支持版本和支持设备类型
编译得到 bundle 文件
导入图片,编译一下
可以发现,在 bundle工程中,图片放置在 image 文件夹下,编译后出现在 NiceBundle.bundle 根目录下,说明就算嵌套文件夹,编译后的资源文件都会在 bundle 文件根目录下。这个很重要,涉及到后面我们读取 bundle 文件的路径问题。
同 Framework 工程一样,为方便管理,可以将其添加到 xcworkspace 中。
bundle资源读取
将 NiceBundle.bundle 导入 Demo 工程,编译,查看 bundle 文件处于应用的哪个位置
由此,可以根据 bundle 在使用时的路径,得到该如何读取的方式。
NSBundle+NiceSDKBundle.h
#import <UIKit/UIKit.h>
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
可以看到,通过上面的方式,读取图片成功
同理,其它类型的文件,也可以通过上面的方式进行读取。
看懂请随手点赞,朋友们!🌹🌹🌹