如何开发包含图像资源的iOS框架?
我正在开发一个包含图像资源的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:方法 将搜索应用程序目录中而不是框架目录中的图像,因此我可以通过将这两个图像添加到演示项目来修复它。然而,它几乎不优雅。因此,是
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不支持创建自定义框架。为此使用静态库和自定义捆绑包。您能否更清楚地了解如何提供这些功能?示例代码将很有帮助。