ios – 获取UIScrollView的屏幕截图,包括屏幕外部分

ios – 获取UIScrollView的屏幕截图,包括屏幕外部分,第1张

概述我有一个UIScrollView decendent实现takeScreenshot方法,看起来像这样: -(void)takeScreenshot { CGRect contextRect = CGRectMake(0, 0, 768, 1004); UIGraphicsBeginImageContext(contextRect.size); [self.layer r 我有一个UIScrollVIEw decendent实现takeScreenshot方法,看起来像这样:

-(voID)takeScreenshot {    CGRect contextRect  = CGRectMake(0,768,1004);  UIGraphicsBeginImageContext(contextRect.size);      [self.layer renderInContext:UIGraphicsGetCurrentContext()];  UIImage *vIEwImage = UIGraphicsGetimageFromCurrentimageContext();  UIGraphicsEndImageContext();  // do something with the vIEwImage here.}

这基本上移动到滚动视图的顶部,并且截取可见区域的屏幕截图。它工作正常,当iPad面向肖像,但当它在风景中的图像底部被切断(因为可见区域的高度只有748,而不是1004)。

是否有可能获得UIScrollVIEw的快照,包括屏幕上的区域?或者我需要向下滚动视图,拍摄第二张照片并将它们拼在一起吗?

解决方法 这里是工作的代码…

- (IBAction) renderScrollVIEwToImage{    UIImage* image = nil;    UIGraphicsBeginImageContext(_scrollVIEw.contentSize);    {        CGPoint savedContentOffset = _scrollVIEw.contentOffset;        CGRect savedFrame = _scrollVIEw.frame;        _scrollVIEw.contentOffset = CGPointZero;        _scrollVIEw.frame = CGRectMake(0,_scrollVIEw.contentSize.wIDth,_scrollVIEw.contentSize.height);        [_scrollVIEw.layer renderInContext: UIGraphicsGetCurrentContext()];             image = UIGraphicsGetimageFromCurrentimageContext();        _scrollVIEw.contentOffset = savedContentOffset;        _scrollVIEw.frame = savedFrame;    }    UIGraphicsEndImageContext();    if (image != nil) {        [UIImagePNGRepresentation(image) writetofile: @"/tmp/test.png" atomically: YES];        system("open /tmp/test.png");    }}

最后几行只是将图像写入/tmp/test.png,然后在PrevIEw.app中打开它。这显然只在模拟器中工作:-)

在ScrollViewScreenShot Github Repository完成项目

总结

以上是内存溢出为你收集整理的ios – 获取UIScrollView的屏幕截图,包括屏幕外部分全部内容,希望文章能够帮你解决ios – 获取UIScrollView的屏幕截图,包括屏幕外部分所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1087731.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存