繁体   English   中英

iOS以编程方式拍摄屏幕快照弄乱了图像

[英]iOS programatically taking a screen shot messes up the image

我想每次用户按住屏幕一秒钟时截屏,然后打开一个电子邮件窗口让用户发送图像。 但是我有一个奇怪的问题。 如果存在渐变图像,则图像会变得混乱(加载了PNG渐变的UIImage将进行解释)。

所以,我创建了一个UILongPressGestureRecgnizer ,设置它的minimumPressDuration1.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单元格的子视图。 如何解决? 希望我们能找到解决方案,因为我确实花了一些时间来“解决”这个问题:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM