一般情况下,使用 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 添加到 xcworkspacebundle资源读取
将 NiceBundle.bundle 导入 Demo 工程,编译,查看 bundle 文件处于应用的哪个位置
编译后 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
可以看到,通过上面的方式,读取图片成功
图片获取成功
同理,其它类型的文件,也可以通过上面的方式进行读取。
看懂请随手点赞,朋友们!🌹🌹🌹
网友评论