-(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的屏幕截图,包括屏幕外部分所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)