【问题标题】:How to get the screen shot of invisible part in ios?如何在ios中获取不可见部分的屏幕截图?
【发布时间】:2014-03-07 20:24:05
【问题描述】:

我正在开发 iOS 应用程序,我需要在其中捕获视图并将 MMS 发送给特定的人。一切正常。但我面临捕获不可见的问题(为了获得更多说明,我附上了图片)。

我正在获取可见视图的屏幕截图。如何解决此问题?有什么方法可以达到我的要求吗?我得到的图像是

我用的代码截图是

UIGraphicsBeginImageContext(webview_pdf.bounds.size);
[webview_pdf.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *pdfImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

很好的建议是可观的。提前致谢!

【问题讨论】:

    标签: ios iphone objective-c ipad ios6


    【解决方案1】:

    终于找到了解决办法

    + (UIImage *) imageFromWebView:(UIWebView *)view
    {
        // tempframe to reset view size after image was created
        CGRect tmpFrame = view.frame;
    
        // set new Frame
        CGRect aFrame = view.frame;
        aFrame.size.height = [view sizeThatFits:[[UIScreen mainScreen] bounds].size].height;
        view.frame = aFrame;
    
        // do image magic
        UIGraphicsBeginImageContext([view sizeThatFits:[[UIScreen mainScreen] bounds].size]);
    
        CGContextRef resizedContext = UIGraphicsGetCurrentContext();
        [view.layer renderInContext:resizedContext];
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    
        UIGraphicsEndImageContext();
    
        // reset Frame of view to origin
        view.frame = tmpFrame;
        return image;
    }
    

    【讨论】:

    • 在用代码回答问题时,请确保代码格式正确,否则很难阅读。
    【解决方案2】:

    您需要创建另一个视图,该视图是内容的完整大小。您可以将此视图添加到屏幕外,然后以与此处相同的方式捕获它。它被切断的原因是因为视图只渲染了那部分内容。

    【讨论】:

    • 但我有一个疑问..如果有无限的记录,它是否有效? @CW0007007
    • 创建视图可能需要很长时间。但它适用于任何大小的内容。只需在屏幕外创建另一个视图容器。将高度设置为内容的高度。然后将该视图保存为 n 个图像。
    • 还有更多关于U @CW0007007的问题..mms的最大限制是300kb。随着记录的增加,图像大小也会增加。然后MMS无法发送。那么解决方案是什么这个?
    • 通过电子邮件发送。彩信真的不应该用于发送小视频和照片以外的任何东西……
    猜你喜欢
    • 2021-07-12
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    相关资源
    最近更新 更多