我有一个没有Alpha频道的图片 - 我在Finder的“获取信息”面板中确认了这一点。然而,当我把它放在UIImageView
UIScrollView
并且我启用了显示混合图层时,图像为红色表示它正在尝试应用透明度,这将会影响性能。
如何将此修复为绿色,以便iOS知道此视图中的所有内容完全不透明?
我尝试了以下但是没有删除红色:
self.imageView.opaque = YES;
self.scrollView.opaque = YES;
答案 0 :(得分: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;
}
答案 1 :(得分:0)
Swift 3x Xcode 9x
func optimizedImage(from image: UIImage) -> UIImage {
let imageSize: CGSize = image.size
UIGraphicsBeginImageContextWithOptions(imageSize, true, UIScreen.main.scale)
image.draw(in: CGRect(x: 0, y: 0, width: imageSize.width, height: imageSize.height))
let optimizedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return optimizedImage ?? UIImage()
}