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

ドキュメントから:

アルファ チャネル情報を指定するための定数は CGImageAlphaInfo 型で宣言されますが、このパラメーターに安全に渡すことができます。

したがって、キャストを使用して警告を抑制することができます。

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