[英]iOS programatically taking a screen shot messes up the image
我想每次用户按住屏幕一秒钟时截屏,然后打开一个电子邮件窗口让用户发送图像。 但是我有一个奇怪的问题。 如果存在渐变图像,则图像会变得混乱(加载了PNG渐变的UIImage
将进行解释)。
所以,我创建了一个UILongPressGestureRecgnizer
,设置它的minimumPressDuration
来1.0f
并把它添加到主视图作为手势识别: [self.view addGestureRecognizer:myRecognizer]
识别器调用一个方法,比如说shareClicked
。 我要在其中捕获当前屏幕,然后弹出其中包含该图像的电子邮件编辑器。 这是我的方法:
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
else
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
MFMailComposeViewController *mailComposer = [[MFMailComposeViewController alloc] init];
mailComposer.mailComposeDelegate = self;
[mailComposer setSubject:@"Share feature"];
[mailComposer setMessageBody:[NSString stringWithFormat:@"Im sharing this with you cause its cool."] isHTML:NO];
[mailComposer addAttachmentData:UIImagePNGRepresentation(image) mimeType:@"image/png" fileName:@"image"];
[self presentViewController:mailComposer animated:YES completion:NULL];
但有个问题。 主视图上有一个表格视图,第三个单元格中有一个我前面提到的渐变。 我不确定如何解释它,但它是这样的:
从图片上可以看到,顶部有一个渐变,而下方则有一个渐变。 最上面的一个正常渲染,而第二个导致一个奇怪的问题。 渐变实际上不是蓝色,而是白色,然后变为透明。 这是黑色表面上的渐变图像:
以下是模拟器的屏幕截图:
最后是如何在邮件编辑器中呈现和显示它:
我究竟做错了什么? 问题是什么? 它不是模拟器的故障原因,在移动设备上也是如此。 如果是iOS7,那有什么不同。
为了清楚起见,顶部渐变是相同的,但呈放射状且完美呈现。 这两个渐变都是tableview单元格的子视图。 如何解决? 希望我们能找到解决方案,因为我确实花了一些时间来“解决”这个问题:)
看看推荐的解决方案https://developer.apple.com/library/ios/qa/qa1703/_index.html#//apple_ref/doc/uid/DTS40010193,因为不再允许UIGetScreenImage
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.