iOS-截取TableView生成图片

摘要:
先看一下实例效果:如果所示,这是一个在APP中截图,并调起微信客户端,发送给好友的例子,图片就是一个tableView的截图。此时,你需要先获取到cell的行数,设置tableView的rowHeight属性,这个就不用多说了。

先看一下实例效果:

iOS-截取TableView生成图片第1张

如果所示,这是一个在APP中截图,并调起微信客户端,发送给好友的例子,图片就是一个tableView的截图。

先实现一个小例子,如果tableVIew里面的内容,没有超过当前屏幕显示的区域,我们可以直接根据tableView的frame,生成一张图片

 //  根据view生成图片
    UIGraphicsBeginImageContext(shareView.bounds.size);
    [shareView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

但是,如果遇到了内容过多的情况,此时tableView的行数会很多,如何截取tableView的contentSize里面的内容呢,其实也就是,获取每一个cell,一条一条的绘制出来就行了。此时,你需要先获取到cell的行数,设置tableView的rowHeight属性,这个就不用多说了。以下是主要代码:

//  截取tableView的图
- (UIImage*)screenShotForIndexPaths:(NSArray*)indexPaths{
    
    CGPoint originalOffset = self.tableView.contentOffset;
    
//   UIGraphicsBeginImageContextWithOptions(CGSizeMake(self.tableView.size.width, self.tableView.rowHeight * [indexPaths count]), NO, 0.0); CGContextRef ctx = UIGraphicsGetCurrentContext(); //---一個一個把cell render到CGContext上 UUMainVINCarMessageViewCell *cell = nil; for(NSIndexPath *indexPath in indexPaths) { //讓該cell被正確的產生在tableView上, 之後才能在CGContext上正確的render出來 [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionNone animated:NO]; cell = (UUMainVINCarMessageViewCell*)[self.tableView cellForRowAtIndexPath:indexPath]; [cell.layer renderInContext:ctx]; //--欲在context上render的origin CGContextTranslateCTM(ctx, 0, self.tableView.rowHeight); //-- } //--- UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); self.tableView.contentOffset = originalOffset; return image; }

就这么简单的实现了,此外记录一个博客

http://www.cnblogs.com/kenshincui/p/3959951.html#!comments

免责声明:文章转载自《iOS-截取TableView生成图片》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇shell 脚本 常用命令NODEJS文件上传下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

css 父元素的宽度随子元素的宽度变化

当最外面的层想要设置一个 overflow: hidden,但子元素又想他们能滚动,像今日头条的滚动导航一样: html: <div id="wrapper"> <ul id="scroll"> <li>cell 1</li> <li>cell 2</li>...

openpyxl/csv--python处理excel表格模块

#conding='utf-8'#属性方法参考:https://zhuanlan.zhihu.com/p/43186995 #Workbook ;worksheet;active;load_workbook;cell;value;rows;append"""workbook对象属性: active:获取当前活跃的Worksheet worksheets...

肿瘤精准细胞免疫治疗:梦想照进现实

自2015年1月20日美国总统奥巴马高调宣布启动“精准医疗计划(Precision Medicine Initiative)”以来,全球范围内掀起一股精准医疗热。在国内,精准医疗也风生水起,受到业内学者、药企代表、患者等相关人群的广泛关注。精准医疗本质上是一种更为精确的个性化医疗,非常适用于恶性肿瘤的临床治疗。而相对于其他精准医疗策略,精准细胞免疫治疗(p...

POI设置边框

在做一个电子表格时,边框的设置有时是必不可少的。这一节就来介绍边框,设置时,可以指定边框的位置,边框的种类,边框的顔色。 首先是边框的位置和种类。对单元格设置边框时,有上下左右位置之分,所以POI也准备了四个不同的方法。 上部的边框: setBorderTop public void setBorderTop(short border) set th...

TableView之表头、表尾,区头、区尾!

一、UITableView的UITableViewStyle   样式分为UITableViewStylePlain和UITableViewStyleGrouped两种;   plain样式下区头和区尾是悬浮的(即拖动表的时候区头和区尾不会消失,一直显示在界面上);   grouped样式区头和区尾是随表一起滑动的。静态的tableview需要分区时(XI...

IOS 使用Autolayout实现UITableView的Cell动态布局和高度动态改变

如何在UITableViewCell中使用Autolayout来实现Cell的内容和子视图自动计算行高,并且能够保持平滑滚动的? 这个问题得到了300+的支持和450+的收藏,答案得到了730+的支持,很详细的说明了如何在iOS7和iOS8上实现UITableView的动态行高功能,并且这个答案对实现UICollectionView的动态行高也具有参考...