前言
xcode 15.3
ios 10.0
起因,因为公司要使用保利威视的视频使用,我拿来他们的Module来封装做成组件来用,但是他们的xib文件一直是nil,为此困扰了我好久
说明
在组件化中,你的.assets中的图片,文件夹中的图片、gif图片,xib文件,json文件等都需要进行处理,否则加载不了
1、在podspec设置生成bundle文件
在你的组件化文件pod -> .podspec文件中设置
PolyvOpenSourceModule/Assets.xcassets: 设置加载Assets.xcassets中的图片
PolyvOpenSourceModule/**/.xib:设置加载xib文件
PolyvOpenSourceModule/Images/: 设置加载Module -> Images文件夹中的图片、gif图片、json文件等
s.resource_bundles = {
'Polyv_bundles' => ['PolyvOpenSourceModule/Assets.xcassets', 'PolyvOpenSourceModule/**/*.xib', 'PolyvOpenSourceModule/Images/*']
}
2、在组件中加载文件
2.1、Objective-C
2.1.1 首先生成 NSBundle文件
FADeviceAssets.h 封装
+ (NSBundle *)hj_ResourceBundle;
FADeviceAssets.m 注意,此处的bundle文件名要和 .podspec 文件中设置的一致
static NSBundle *resourceBundle = nil;
static dispatch_once_t onceToken;
+ (NSBundle *)hj_ResourceBundle {
dispatch_once(&onceToken, ^{
NSString *resourceBundlePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"Polyv_bundles" ofType:@"bundle"];
resourceBundle = [NSBundle bundleWithPath:resourceBundlePath];
});
return resourceBundle;
}
2.1.2 加载图片
封装加载方法
@interface UIImage (Category)
+ (instancetype)hj_imageDevice:(NSString *)name;
@end
@implementation UIImage (Category)
+ (instancetype)hj_imageDevice:(NSString *)name {