HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 获取UIScrollView的屏幕截图,包括屏幕外部分大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个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的屏幕截图,包括屏幕外部分所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。