45

我正在 xCode5 上将一个旧的 iOS 5 项目转换为 iOS6.0,并且大多数警告和错误都已修复,但对于这个。关于如何重写代码以避免编译器警告的任何建议。

#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')

如果有人可以帮助修改代码,将不胜感激。

4

1 回答 1

118

从文档:

用于指定 alpha 通道信息的常量使用 CGImageAlphaInfo 类型声明,但可以安全地传递给此参数。

所以你可以使用强制转换来抑制警告:

CGBitmapInfo bitmapInfo = (CGBitmapInfo) kBitmapInfo;
于 2013-09-20T16:45:00.533 回答