【发布时间】:2013-09-29 18:44:13
【问题描述】:
我有一个接收UIImage 的方法,我将其转换为NSData 并请求发布该数据,它适用于iOS 6,但当我尝试使用iOS 7 时,图像失去透明背景。
这是我到目前为止所尝试的:
-(void)post:(UIImage *)firm name:
{
int x = 350;
NSData *imageData = UIImagePNGRepresentation(firm);
UIImage *image=[UIImage imageWithData:imageData];
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(10, x, 40, 50)];
imageView.backgroundColor = [UIColor clearColor];
imageView.image = image;
NSData *imageData2 = [NSData dataWithData:UIImagePNGRepresentation(firm)];
UIImage *image2=[UIImage imageWithData:imageData2];
UIImageView *imageView2 = [[UIImageView alloc]initWithFrame:CGRectMake(160, x, 40, 50)];
imageView2.image = image2;
UIImageView *imageView3 = [[UIImageView alloc]initWithFrame:CGRectMake(110, x, 40, 50)];
imageView3.image = firm;
UIImage * img = [UIImage imageWithData:UIImagePNGRepresentation(image)];
UIImageView *imageView4 = [[UIImageView alloc]initWithFrame:CGRectMake(210, x, 40, 50)];
imageView4.image = img;
[self.view addSubview:imageView];
[self.view addSubview:imageView2];
[self.view addSubview:imageView3];
[self.view addSubview:imageView4];
在imageView3 上,我只是在没有背景的情况下显示它(直到这里我一切都很好)但是当我转换为NSData 然后将其恢复为UIImage 它失去了透明度,
在 iOS 7 上运行的代码
在 iOS 6 及更低版本上运行的相同代码完美无缺!!
我在Github example创建了一个示例操作系统我的问题
【问题讨论】:
-
顺便说一句,responding to another question,我注意到其他人遇到了
CGImageCreateWithMaskingColors没有在 iOS 7 中与UIImagePNGRepresentation一起保留 alpha 通道的问题。在下面的最终解决方案中,我巧合地删除了对CGImageCreateWithMaskingColors的调用,因为我简化了您的 OpenGL 代码。归根结底,我怀疑你偶然发现了一个带有CGImageCreateWithMaskingColors的实际 iOS 7 错误,听起来我们有一些变通办法。
标签: objective-c uiimage ios7 uiimagepngrepresentation