Ios JPG图像不';t使用UIImage ImageName加载
我从参考资料中了解到,使用Ios JPG图像不';t使用UIImage ImageName加载,ios,uiimage,imagenamed,Ios,Uiimage,Imagenamed,我从参考资料中了解到,使用UIImage对象的imageNamed方法,iOS版本4.+不需要文件扩展名 从UIImage类参考: 特别考虑 在iOS 4及更高版本上,不需要指定文件名 文件扩展名。在iOS 4之前,必须指定文件名 分机 但这似乎只适用于PNG文件 如果我的代码是: [UIImage imageNamed:@"test"]; 仅当文件为test.png 如果图像为test.jpg,则不会加载该图像 对我来说,这是一个大问题,因为我需要维护动态图像加载(我不知道在运行时我要加
UIImage
对象的imageNamed
方法,iOS版本4.+不需要文件扩展名
从UIImage
类参考:
特别考虑
在iOS 4及更高版本上,不需要指定文件名
文件扩展名。在iOS 4之前,必须指定文件名
分机
但这似乎只适用于PNG文件
如果我的代码是:
[UIImage imageNamed:@"test"];
- 仅当文件为
test.png
- 如果图像为
,则不会加载该图像test.jpg
png
还是jpg
)
你能帮我吗?谢谢。如果你的应用程序中捆绑了这些图像,你应该知道它们的扩展名 如果您是从在线来源获取它们,并且将它们作为NSData,则可以在此处使用此代码来确定类型
+ (NSString *)contentTypeForImageData:(NSData *)data {
uint8_t c;
[data getBytes:&c length:1];
switch (c) {
case 0xFF:
return @"image/jpeg";
case 0x89:
return @"image/png";
case 0x47:
return @"image/gif";
case 0x49:
case 0x4D:
return @"image/tiff";
}
return nil;
}
根据问题的答案 最新的开发者参考说明了缺失的信息: 特别注意事项 在iOS 4及更高版本上,如果文件为PNG格式,则无需指定.PNG文件扩展名。在iOS 4之前,必须指定文件扩展名 该库对PNG进行特殊处理的一个可能原因是,iOS硬件针对PNG进行了优化。存储在应用程序包中的PNG图像通过Xcode进行优化,更改PNG图像的字节顺序以匹配iPhone设备的图形芯片。(见问题:) 如果您知道您将只有一个PNG或JPG,另一个解决方案是在UIImage上创建一个类别,如下所示
- (UIImage*) jgcLoadPNGorJPGImageWithName:(NSString*)name {
UIImage * value;
if (nil != name) {
value = [UIImage imageNamed:name];
if (nil == value) {
NSString * jpgName = [NSString stringWithFormat:@"%@.jpg", name];
value = [UIImage imageNamed:jpgName];
}
}
return value;
}
这些答案对你有帮助吗?