Неявное преобразование из типа перечисления enum CGImageAlphaInfo в другой тип перечисления CGBitmapinfo (aka) enum CGBitmapInfo)
Я конвертирую старый проект iOS 5 в iOS6.0 на xCode5, и большинство предупреждений и ошибок были исправлены, но для этого. любые предложения о том, как переписать код, чтобы избежать предупреждений компилятора.
#define kBitsPerComponent 8
#define kBitmapInfo kCGImageAlphaPremultipliedLast
- (UIImage*)scaleToSize:(CGSize)size :(UIImage *)image
{
CGBitmapInfo bitmapInfo = kBitmapInfo;
size_t bytesPerRow = size.width * 4.0;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, size.width,
size.height, kBitsPerComponent,
bytesPerRow, colorSpace, bitmapInfo);
CGRect rect = CGRectMake(0.0f, 0.0f, size.width, size.height);
CGContextDrawImage(context, rect, image.CGImage);
CGImageRef scaledImageRef = CGBitmapContextCreateImage(context);
UIImage* scaledImage = [UIImage imageWithCGImage:scaledImageRef];
CGImageRelease(scaledImageRef);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
return scaledImage;
}
код выдает предупреждение Неявное преобразование из типа перечисления enum CGImageAlphaInfo в другой тип перечисления CGBitmapinfo (aka) enum CGBitmapInfo)
будет очень признателен, если кто-то может помочь в том, как изменить код.
1 ответ
Решение
Из документов:
Константы для указания информации альфа-канала объявляются с типом CGImageAlphaInfo, но могут безопасно передаваться этому параметру.
Таким образом, вы можете просто использовать приведение для подавления предупреждения:
CGBitmapInfo bitmapInfo = (CGBitmapInfo) kBitmapInfo;