话不多说,直接上代码。

 1 //
 2 //  MainViewController.m
 3 //  TableViewSreenShot
 4 //
 5 //  Created by ChenJungang on 14/11/8.
 6 //  Copyright (c) 2014年 ChenJungang. All rights reserved.
 7 //
 8
 9 #import "MainViewController.h"
10 #import "MainCell.h"
11
12 #define kTableViewRowCount 30
13 #define kTableViewHeight 76
14
15 @interface MainViewController ()
16 @property (strong, nonatomic) IBOutlet UITableView *tableView;
17 @end
18
19 @implementation MainViewController
20
21 - (void)viewDidLoad {
22     [super viewDidLoad];
23     // Do any additional setup after loading the view from its nib.
24     self.title = @"screen shot";
25     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"share" style:UIBarButtonItemStylePlain target:self action:@selector(screenshotAction:)];
26 }
27
28 - (void)screenshotAction:(id)sender{
29
30     NSMutableArray *indexPaths = [NSMutableArray array];
31     for(NSUInteger i = 0; i < [self.tableView numberOfRowsInSection:0]; i++){
32         [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]];
33     }
34     UIImage *image = [self screenShotForIndexPaths:indexPaths];
35     UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[image] applicationActivities:nil];
36     [self.navigationController presentViewController:activityVC animated:YES completion:NULL];
37 }
38
39 #pragma mark - UITableViewDataSource
40 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
41     return kTableViewRowCount;
42 }
43
44 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
45     return 1;
46 }
47
48 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
49     static NSString *mainCellId = @"CellId";
50     MainCell *mainCell = [tableView dequeueReusableCellWithIdentifier:mainCellId];
51     if (!mainCell) {
52         mainCell = [MainCell loadFromXib];
53     }
54     mainCell.accountNameLabel.text = [NSString stringWithFormat:@"row : %ld",(long)indexPath.row];
55     return mainCell;
56 }
57
58 #pragma mark - UITableViewDelegate
59 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
60     [tableView deselectRowAtIndexPath:indexPath animated:YES];
61 }
62 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
63     return kTableViewHeight;
64 }
65
66 #pragma mark - Screen shot Method
67 - (UIImage*)screenShotForIndexPaths:(NSArray*)indexPaths
68 {
69     CGPoint originalOffset = self.tableView.contentOffset;
70
71     UIGraphicsBeginImageContextWithOptions(CGSizeMake(CGRectGetWidth(self.tableView.frame), self.tableView.rowHeight * indexPaths.count), NO, 0.0);
72     CGContextRef ctx = UIGraphicsGetCurrentContext();
73
74     //将cell逐个渲染到CGContext上
75     MainCell *cell = nil;
76     for (NSIndexPath *indexPath in indexPaths) {
77
78         //找到相应位置的cell,渲染出來
79         [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionNone animated:NO];
80         cell = (MainCell *)[self.tableView cellForRowAtIndexPath:indexPath];
81         [cell.layer renderInContext:ctx];
82
83         //在context上渲染的origin
84         CGContextTranslateCTM(ctx, 0, self.tableView.rowHeight);
85     }
86
87     UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
88     UIGraphicsEndImageContext();
89     self.tableView.contentOffset = originalOffset;
90     return image;
91 }
92
93
94 - (void)didReceiveMemoryWarning {
95     [super didReceiveMemoryWarning];
96     // Dispose of any resources that can be recreated.
97 }
98
99 @end

转载于:https://www.cnblogs.com/ablettchen/p/4082849.html

TableView 截图相关推荐

  1. 仿QQ空间用一个tableview显示多种自定义cell

    2019独角兽企业重金招聘Python工程师标准>>> 第一部分 要实现效果 先来看看真实QQ空间的效果吧: 从这张截图中,可以看到两种自定义的cell,其实在QQ空间的我的空间中有 ...

  2. tableView 获取网络图片,并且设置为圆角(优化,fps)

    代码地址如下: http://www.demodashi.com/demo/11088.html 一.准备工作 例子比较精简,没有什么特殊要求,具备Xocde8.0左右版本的就好 二.程序实现 1.相 ...

  3. python tableview绑定字典_在QTableView中使用各种自定义委托

    思路: 1:为每一列定义委托: A:第一列是编号列,使用只读委托,令该列的单元格是只读的 B:第三列是ID列,只能输入1-12个数字,利用QLineEdit委托和正则表达式对输入进行限制 C:第四年龄 ...

  4. tableview概述

    转自:http://www.cnblogs.com/smileEvday/archive/2012/06/28/tableView.html 下面分9个方面进行介绍: 一.UITableView概述 ...

  5. IOS开发笔记(九)——IM聊天工具个人详情页面,自定义tableview的accessaryView

    中山大学数据科学与计算机学院本科生实验报告 (2019年春季学期) 课程名称 IOS开发 任课老师 郑贵锋 年级 16 专业(方向) 软件工程(计算机应用方向) 学号 16340132 姓名 梁颖霖 ...

  6. Qt局域网聊天(私聊/截图/文件/语音)

    本次设计是一个简易的局域网聊天,功能设计主要分为群聊和私聊两部分,每部分都支持基础聊天以及文件传输功能,私聊页面相较于主页面支持更多功能,例如表情发送.窗口抖动,语音聊天等.参考了<Qt及Qt ...

  7. JavaFX+Jfoenix 学习笔记(序)--引言And软件截图

    文章目录(更新中): JavaFX+Jfoenix 学习笔记(序)--引言And软件截图 JavaFX+Jfoenix 学习笔记(一)--环境搭建及多款Hello Word演示 JavaFX+Jfoe ...

  8. storyboard_创建tableview

    转载:http://www.cocoachina.com/ios/20150330/11440.html 今天我通过完成一个长按cell删除的Demo,向你们展示熟练运用storyboard和Auto ...

  9. iOS中的截屏(屏幕截屏及scrollView或tableView的全部截屏)

    iOS中的截屏(屏幕截屏及scrollView或tableView的全部截屏) 2017.03.16 12:18* 字数 52 阅读 563评论 4喜欢 2 1. 截取屏幕尺寸大小的图片并保存至相册 ...

最新文章

  1. 打造自己的树莓派监控系统1--CPU监控-matplotlib显示数据
  2. ‘%.2f‘ 与 ‘{:.2f}‘.format(w) 区别
  3. 变量的定义 声明和初始化和static
  4. 需要熟悉的几个调试命令:objdump/pmap/ldd/stace
  5. python panda读取csv_python pandas 中文件的读写——read_csv()读取文件
  6. Maven:mirror和repository 区别
  7. 静态网页托管_求职季,教你制作一份精美的在线网页简历,程序员必看!!
  8. 计算机组成原理4位ALU运算器设计,计算机组成原理课程设计-alu设计和4位锁存器设计.doc...
  9. TCP链接的建立与终止
  10. android+3.1.2+imagebutton监听,android Button ImageButton 差别
  11. 关于Ext.grid.EditorGridPanel使用中遇到的问题
  12. 如何做好一场技术分享(技巧篇)
  13. 2021招生之友+录取统计_电子版免费分享
  14. 在上海奋斗的五年---从月薪3500到700万 (一个西北真汉子的人生)
  15. 下载到的电子书格式是Mobi,这种格式能否在MAC电脑上打开?
  16. Java就业方向和自学提升方法总结黑马就业班资源分享
  17. 2018 Google IO干货摘要及对国内Android开发者的影响
  18. ESP8266 上电 boot 模式
  19. flutter 保存图片或者视频到相册
  20. 74LS160(两个)驱动数码管显示两位十进制数

热门文章

  1. php 操件文件指定编码,(PHP帮助)如果文件中存在特定编号,请执行此操作
  2. 易语言html到画板,易语言画板使用方法图解
  3. eclipse properties 中文显示编码_JMeter点道为止系列(1)JMeter配置文件jmeter.properties常用配置项...
  4. 【520有奖征文】 老同学聚会,20年IT行业从业感悟
  5. 以后台服务的形式启动nodejs应用
  6. word转换php方法,PHP实现Word转换PDF的方法
  7. java中bash应用_在bash脚本中查找java应用程序的进程ID(以查看目标应用程序是否已在运行)...
  8. notepad++格式化插件安装
  9. Filter过滤器链(多个过滤器)
  10. centos7.5 mysql5.7 的卸载和离线安装全过程