如何开发包含图片资源的iOS框架?
How to develop an iOS framework which includes image resources?
我正在开发一个包含图片资源的iOS框架,我在框架中调用了下面的方法,
crossImage = [UIImage imageNamed:@"cross"];
arrowImage = [UIImage imageNamed:@"arrow"];
然后我构建了一个演示来测试我的框架,但是发现 crossImage 和 arrowImage 都是 nil;后来想出了imageNamed:
方法
将在应用程序目录而不是框架目录中搜索图像,因此我可以通过将这两个图像添加到演示项目来修复它。然而,它几乎不优雅。那么还有其他解决方案可以在我的框架中定位图像吗?
您可以使用以下方法从框架加载图像:
+ (UIImage *)imageNamed:(NSString *)name
inBundle:(NSBundle *)bundle
compatibleWithTraitCollection:(UITraitCollection *)traitCollection
方法。
在你的框架中class这样写:
NSBundle *frameWorkBundle = [NSBundle bundleForClass:[self class]];
UIImage *arrow = [UIImage imageNamed:@"arrow" inBundle:frameWorkBundle compatibleWithTraitCollection:nil];
UIImage *cross = [UIImage imageNamed:@"cross" inBundle:frameWorkBundle compatibleWithTraitCollection:nil];
有关此方法的更多信息,请参阅 UIImage Class Reference。
您还可以使用以下方式加载图像:
[[UIImage alloc] initWithContentsOfFile:path];
您希望从包路径生成的路径。类似于:
NSBundle *bundle = [NSBundle bundleForClass:[YourFramework class]];
NSString* path = [bundle pathForResource:@"cross.jpg" ofType:nil];
只有当您的图像不在 .xcasserts
中时,这才有效。
UIImage *image = [UIImage imageNamed:@"YourFramework.framework/imageName"]
最后,我创建了一个bundle来存放所有的图片资源,我们提供了*.framework和*.bunlde,这样比较优雅。
我设法使用
在Swift框架中加载我的图像
UIImage(named: name, in: Bundle.module, compatibleWith: nil)
我正在开发一个包含图片资源的iOS框架,我在框架中调用了下面的方法,
crossImage = [UIImage imageNamed:@"cross"];
arrowImage = [UIImage imageNamed:@"arrow"];
然后我构建了一个演示来测试我的框架,但是发现 crossImage 和 arrowImage 都是 nil;后来想出了imageNamed:
方法
将在应用程序目录而不是框架目录中搜索图像,因此我可以通过将这两个图像添加到演示项目来修复它。然而,它几乎不优雅。那么还有其他解决方案可以在我的框架中定位图像吗?
您可以使用以下方法从框架加载图像:
+ (UIImage *)imageNamed:(NSString *)name
inBundle:(NSBundle *)bundle
compatibleWithTraitCollection:(UITraitCollection *)traitCollection
方法。
在你的框架中class这样写:
NSBundle *frameWorkBundle = [NSBundle bundleForClass:[self class]];
UIImage *arrow = [UIImage imageNamed:@"arrow" inBundle:frameWorkBundle compatibleWithTraitCollection:nil];
UIImage *cross = [UIImage imageNamed:@"cross" inBundle:frameWorkBundle compatibleWithTraitCollection:nil];
有关此方法的更多信息,请参阅 UIImage Class Reference。
您还可以使用以下方式加载图像:
[[UIImage alloc] initWithContentsOfFile:path];
您希望从包路径生成的路径。类似于:
NSBundle *bundle = [NSBundle bundleForClass:[YourFramework class]];
NSString* path = [bundle pathForResource:@"cross.jpg" ofType:nil];
只有当您的图像不在 .xcasserts
中时,这才有效。
UIImage *image = [UIImage imageNamed:@"YourFramework.framework/imageName"]
最后,我创建了一个bundle来存放所有的图片资源,我们提供了*.framework和*.bunlde,这样比较优雅。
我设法使用
在Swift框架中加载我的图像UIImage(named: name, in: Bundle.module, compatibleWith: nil)