我对一些在 iOS5 中引发异常但在 6 和 7 中有效的图像缩放代码有疑问。
我需要支持运行 5 的用户,所以我尝试编写一个 try-catch,当异常发生时它会调用一些特殊的 iOS5 代码。
异常 (EXC_BAD_ACCESS) 似乎发生在 Apple 代码中,并且我的代码中的异常处理程序不处理错误,但应用程序立即崩溃。
那么,任何人都可以提出一种更强大的方法来尝试捕获异常,或者任何人都可以阐明缩放图像的更好方法吗?(记住这是针对iOS5的)
我的主要图像缩放功能(包含不起作用的异常捕获器):
+ (UIImage *)imageWithImage:(UIImage *)image scaledToMax:(int)maxDimension {
// Get a copy of the image where the new image has a maximum height or width as specified by maxDimension
float scaleFactor;
if (image.size.width<=maxDimension && image.size.height<=maxDimension)
{
return image;
}
if (image.size.width>image.size.height)
{
scaleFactor = maxDimension / image.size.width;
} else {
scaleFactor = maxDimension / image.size.height;
}
float newWidth = roundf(image.size.width * scaleFactor);
float newHeight = roundf(image.size.height * scaleFactor);
CGSize newSize = CGSizeMake(newWidth, newHeight);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
NSLog(@"HPSImageHelper imageWithImage point a %f %f", newSize.width, newSize.height);
UIImage *newImage;
@try {
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
NSLog(@"HPSImageHelper imageWithImage point b");
newImage = UIGraphicsGetImageFromCurrentImageContext();
NSLog(@"HPSImageHelper imageWithImage point c");
UIGraphicsEndImageContext();
}
@catch (NSException * e) {
NSLog(@"HPSImageHelper imageWithImage point d");
newImage = [image scaleToSize:newSize];
NSLog(@"HPSImageHelper imageWithImage point e");
}
NSLog(@"HPSImageHelper imageWithImage point f");
return newImage;
}