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

时间:2015-02-28 03:12:33

标签: ios objective-c frameworks nsbundle ios-frameworks

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

crossImage = [UIImage imageNamed:@"cross"];
arrowImage = [UIImage imageNamed:@"arrow"];

然后我构建了一个演示来测试我的框架,但是发现crossImage和arrowImage都是零;之后,我找出了imageNamed:方法  将搜索应用程序目录中不在框架中的图像,因此我可以通过将两个图像添加到演示项目来修复它。然而,它几乎没有优雅。那么在我的框架中定位图像的任何其他解决方案呢?

5 个答案:

答案 0 :(得分:22)

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

+ (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 Class Reference

答案 1 :(得分:1)

您还可以使用以下方式加载图片:

[[UIImage alloc] initWithContentsOfFile:path];

您要从捆绑路径生成的路径。类似的东西:

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

答案 2 :(得分:1)

仅当您的图片不在.xcasserts时才会有效。

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我设法使用 Swift 框架加载我的图像

BlazingPizza.Client