显示混合图层显示红色UII图像,但它没有Alpha通道

Jor*_*n H 10 objective-c uiscrollview uiimageview uiimage ios

我有一个没有alpha通道的图像 - 我在Finder的"获取信息"面板中确认.然而,当我把它放在a UIImageViewUIScrollView并且我启用Show Blended Layers时,图像是红色的,这表明它正在尝试应用透明度,这将会影响性能.

如何解决这个问题是绿色的,所以iOS知道这个视图中的一切都是完全不透明的?

我尝试了以下但是没有删除红色:

self.imageView.opaque = YES;
self.scrollView.opaque = YES;
Run Code Online (Sandbox Code Playgroud)

Gus*_*osa 12

默认情况下,UIImage实例在包含Alpha通道的图形上下文中呈现.要避免它,您需要使用新的图形上下文生成另一个图像opaque = YES.

- (UIImage *)optimizedImageFromImage:(UIImage *)image
{
    CGSize imageSize = image.size;
    UIGraphicsBeginImageContextWithOptions( imageSize, opaque, scale );
    [image drawInRect: CGRectMake( 0, 0, imageSize.width, imageSize.height )];
    UIImage *optimizedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return optimizedImage;
}
Run Code Online (Sandbox Code Playgroud)