我正在开发一个应用程序,允许用户将图像放入框架中。然后他们可以使用iOS共享表单以某种方式分享该图像。我的问题是框架有圆角,但当我通过保存图像到相机胶卷来测试时,背景是白色而不是透明的,我无法弄清楚如何使其保存为带有透明背景的图像。
这是我的代码:
这是我的视图层次结构,来自Xcode的视图调试器: 上面代码中突出显示的UIView是
我知道使用
我已经尝试在上面的片段之前在代码中明确设置背景为
这是我的代码:
UIGraphicsBeginImageContextWithOptions(self.framedImage.bounds.size, NO, 0.0f);
[self.framedImage drawViewHierarchyInRect:self.framedImage.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//present the system share sheet for the image
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[image] applicationActivities:nil];
这是我的视图层次结构,来自Xcode的视图调试器: 上面代码中突出显示的UIView是
self.framedImage
。UIImageView和包含UIImageView的UIButton都是保存层次结构的一部分。我知道使用
UIGraphicsBeginImageContextWithOptions
并将opaque
标志设置为NO意味着我的图像必须具有alpha通道,但就我所见,它确实具有。UIView、UIImageView和UIButton的背景颜色都是[UIColor clearColor]
,对于所有三个视图,在Interface Builder中,“Opaque”复选框都未被选中。当我在调试器中检查这些视图时,它们的背景颜色的alpha值都为0。我已经尝试在上面的片段之前在代码中明确设置背景为
[UIColor clearColor]
,但它仍然带有白色背景保存。我尝试将背景更改为另一种颜色(紫色),保存的结果是我期望的带有紫色背景。因此,问题似乎是UIView的透明区域被转换为UIImage中的不透明白色。
有人知道我这里缺少了什么吗?