当我以这种方式加载BMP图像时:
NSData * pImageData = [[NSData alloc] initWithBytesNoCopy:pBuffer length:dwSize freeWhenDone:NO];
UIImage * pLoaded = [[UIImage alloc] initWithData:pImageData];
[pImageData release];
并尝试使用Quartz2D显示该图像:
CGImageRef cgImage = [pLoaded CGImage];
CGContextSaveGState(context);
CGContextTranslateCTM(context, x, y*2 + h);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, CGRectMake(x, y, w, h), cgImage);
CGContextRestoreGState(context);
图像显示为黑色矩形或有时显示但不完整。当我在initWithData之后暂停1秒钟时,图像显示正确。
是否有UIKit / Quartz2D API方法等待图像初始化完成?
答案 0 :(得分:0)
您可以使用@synchronization
或dispatch
队列等待图片下载完成。
答案 1 :(得分:0)
使用时一切正常:
NSData * pImageData = [[NSData alloc] initWithBytes:pBuffer length:dwSize];
而不是:
NSData * pImageData = [[NSData alloc] initWithBytesNoCopy:pBuffer length:dwSize freeWhenDone:NO];
感谢phix23。