如何开发包含图像资源的iOS框架?

如何开发包含图像资源的iOS框架?,ios,objective-c,frameworks,nsbundle,ios-frameworks,Ios,Objective C,Frameworks,Nsbundle,Ios Frameworks,我正在开发一个包含图像资源的iOS框架,我在框架中调用下面的方法 crossImage = [UIImage imageNamed:@"cross"]; arrowImage = [UIImage imageNamed:@"arrow"]; 然后我构建了一个演示来测试我的框架,但是发现crossImage和arrowImage都是零;然后,我找出imageNamed:方法 将搜索应用程序目录中而不是框架目录中的图像,因此我可以通过将这两个图像添加到演示项目来修复它。然而,它几乎不优雅。因此,是

我正在开发一个包含图像资源的iOS框架,我在框架中调用下面的方法

crossImage = [UIImage imageNamed:@"cross"];
arrowImage = [UIImage imageNamed:@"arrow"];
然后我构建了一个演示来测试我的框架,但是发现crossImage和arrowImage都是零;然后,我找出
imageNamed:
方法
将搜索应用程序目录中而不是框架目录中的图像,因此我可以通过将这两个图像添加到演示项目来修复它。然而,它几乎不优雅。因此,是否有其他解决方案针对我的框架中的图像?

您可以使用以下方法从框架加载图像:

+ (UIImage *)imageNamed:(NSString *)name
               inBundle:(NSBundle *)bundle
compatibleWithTraitCollection:(UITraitCollection *)traitCollection
方法

在框架类中,编写如下代码:

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 alloc] initWithContentsOfFile:path];
要从束路径生成的路径。比如:

NSBundle *bundle = [NSBundle bundleForClass:[YourFramework class]];
NSString* path = [bundle pathForResource:@"cross.jpg" ofType:nil];

仅当图像不在
.xAsserts
中时,此选项才有效

UIImage *image = [UIImage imageNamed:@"YourFramework.framework/imageName"]

最后,我创建了一个包来保存所有图像资源,我们提供了*.framework和*.bunlde,这更加优雅。

我使用

UIImage(名称:name,in:Bundle.module,compatibleWith:nil)

您建议的方法只支持iOS 8.0及更高版本,如果在iOS 7.0和6.0上使用,会怎么样?@GaojinHsu:iOS 7和6.0中的AFAIK apple不支持创建自定义框架。为此使用静态库和自定义捆绑包。您能否更清楚地了解如何提供这些功能?示例代码将很有帮助。