TableView 截图
话不多说,直接上代码。
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 截图相关推荐
- 仿QQ空间用一个tableview显示多种自定义cell
2019独角兽企业重金招聘Python工程师标准>>> 第一部分 要实现效果 先来看看真实QQ空间的效果吧: 从这张截图中,可以看到两种自定义的cell,其实在QQ空间的我的空间中有 ...
- tableView 获取网络图片,并且设置为圆角(优化,fps)
代码地址如下: http://www.demodashi.com/demo/11088.html 一.准备工作 例子比较精简,没有什么特殊要求,具备Xocde8.0左右版本的就好 二.程序实现 1.相 ...
- python tableview绑定字典_在QTableView中使用各种自定义委托
思路: 1:为每一列定义委托: A:第一列是编号列,使用只读委托,令该列的单元格是只读的 B:第三列是ID列,只能输入1-12个数字,利用QLineEdit委托和正则表达式对输入进行限制 C:第四年龄 ...
- tableview概述
转自:http://www.cnblogs.com/smileEvday/archive/2012/06/28/tableView.html 下面分9个方面进行介绍: 一.UITableView概述 ...
- IOS开发笔记(九)——IM聊天工具个人详情页面,自定义tableview的accessaryView
中山大学数据科学与计算机学院本科生实验报告 (2019年春季学期) 课程名称 IOS开发 任课老师 郑贵锋 年级 16 专业(方向) 软件工程(计算机应用方向) 学号 16340132 姓名 梁颖霖 ...
- Qt局域网聊天(私聊/截图/文件/语音)
本次设计是一个简易的局域网聊天,功能设计主要分为群聊和私聊两部分,每部分都支持基础聊天以及文件传输功能,私聊页面相较于主页面支持更多功能,例如表情发送.窗口抖动,语音聊天等.参考了<Qt及Qt ...
- JavaFX+Jfoenix 学习笔记(序)--引言And软件截图
文章目录(更新中): JavaFX+Jfoenix 学习笔记(序)--引言And软件截图 JavaFX+Jfoenix 学习笔记(一)--环境搭建及多款Hello Word演示 JavaFX+Jfoe ...
- storyboard_创建tableview
转载:http://www.cocoachina.com/ios/20150330/11440.html 今天我通过完成一个长按cell删除的Demo,向你们展示熟练运用storyboard和Auto ...
- iOS中的截屏(屏幕截屏及scrollView或tableView的全部截屏)
iOS中的截屏(屏幕截屏及scrollView或tableView的全部截屏) 2017.03.16 12:18* 字数 52 阅读 563评论 4喜欢 2 1. 截取屏幕尺寸大小的图片并保存至相册 ...
最新文章
- 打造自己的树莓派监控系统1--CPU监控-matplotlib显示数据
- ‘%.2f‘ 与 ‘{:.2f}‘.format(w) 区别
- 变量的定义 声明和初始化和static
- 需要熟悉的几个调试命令:objdump/pmap/ldd/stace
- python panda读取csv_python pandas 中文件的读写——read_csv()读取文件
- Maven:mirror和repository 区别
- 静态网页托管_求职季,教你制作一份精美的在线网页简历,程序员必看!!
- 计算机组成原理4位ALU运算器设计,计算机组成原理课程设计-alu设计和4位锁存器设计.doc...
- TCP链接的建立与终止
- android+3.1.2+imagebutton监听,android Button ImageButton 差别
- 关于Ext.grid.EditorGridPanel使用中遇到的问题
- 如何做好一场技术分享(技巧篇)
- 2021招生之友+录取统计_电子版免费分享
- 在上海奋斗的五年---从月薪3500到700万 (一个西北真汉子的人生)
- 下载到的电子书格式是Mobi,这种格式能否在MAC电脑上打开?
- Java就业方向和自学提升方法总结黑马就业班资源分享
- 2018 Google IO干货摘要及对国内Android开发者的影响
- ESP8266 上电 boot 模式
- flutter 保存图片或者视频到相册
- 74LS160(两个)驱动数码管显示两位十进制数
热门文章
- php 操件文件指定编码,(PHP帮助)如果文件中存在特定编号,请执行此操作
- 易语言html到画板,易语言画板使用方法图解
- eclipse properties 中文显示编码_JMeter点道为止系列(1)JMeter配置文件jmeter.properties常用配置项...
- 【520有奖征文】 老同学聚会,20年IT行业从业感悟
- 以后台服务的形式启动nodejs应用
- word转换php方法,PHP实现Word转换PDF的方法
- java中bash应用_在bash脚本中查找java应用程序的进程ID(以查看目标应用程序是否已在运行)...
- notepad++格式化插件安装
- Filter过滤器链(多个过滤器)
- centos7.5 mysql5.7 的卸载和离线安装全过程