先看一下实例效果:

如果所示,这是一个在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生成图片的更多相关文章

  1. 截取TableView生成图片

    先看一下实例效果: 如果所示,这是一个在APP中截图,并调起微信客户端,发送给好友的例子,图片就是一个tableView的截图. 先实现一个小例子,如果tableVIew里面的内容,没有超过当前屏幕显 ...

  2. iOS开发tableView去掉顶部上部空表区域

    tableview中的第一个cell 里上部 有空白区域,大概64像素 在viewDidLoad中加入如下代码 self.automaticallyAdjustsScrollViewInsets = ...

  3. IOS 截取图片 部分 并生成新图片

    /** * 从图片中按指定的位置大小截取图片的一部分 * * @param image UIImage image 原始的图片 * @param rect CGRect rect 要截取的区域 * * ...

  4. iOS截取http/https流量

    0x01.Why? 做移动测试的同学经常会在app和server中间架设一个代理(例如charles或者fiddler等),由经代理,app和server之间的交互及交互内容变得可视化,使得我们不再摸 ...

  5. 初学IOS之TableView

    PS:tableview作为IOS的UI界面的重点,今天我只学习一部分,在下文列出. 下文我以创建省份为例子,用纯代码的方式创建,但是并不是最优代码,仅作熟悉tableview的创建使用. ----- ...

  6. iOS中TableView小技巧

    摘要: TableView是ios开发中经经常使用到的控件,这里统一记录一下开发中遇到的经常使用小技巧,不断探索更新.也希望大家能够告诉我很多其它经常使用的小技巧啦~一起进步 1.去除多余的列表线条 ...

  7. ios学习--TableView详细解释

    -.建立 UITableView DataTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)]; [DataTa ...

  8. [IOS 开发] TableView、多个TableViewCell、自定义Cell、Cell上画画(故事板+代码方式)

    第一步: //UserTableViewCell.h这里定义第一种Cell #import <UIKit/UIKit.h> @interface UserTableViewCell : U ...

  9. iOS 在tableView上添加button导致按钮没有点击效果和不能滑动的 zhuang

    转载请注明出处. 今天在调试代码的时候,在tableviewcell上添加button,发现button快速点击的话,是看不出点击效果的,查找资料发现, ios7上UITableViewCell子层容 ...

随机推荐

  1. Tabindex

    1.tabindex 属性可以设置键盘中的TAB键在控件中的移动顺序,及焦点的顺序 2. tabindex 属性值范围在1到32767之间 3. 默认的 tabindex 的值为 0 ,将排在所有指定 ...

  2. 微信开发 获取AccessToken

    获取AccessToken的方法 public static Access_token GetAccessToken() { string formatString = String.Format(& ...

  3. AngularJS开发人员最常犯的10个错误

    简介AngularJS是目前最为活跃的Javascript框架之一,AngularJS的目标之一是简化开发过程,这使得AngularJS非常善于构建小型app原型,但AngularJS对于全功能的客户 ...

  4. 已有Web项目添加Maven支持

    IDE:MyEclipse 当我们在现有的Web开发项目中集成 Maven 的时候,需要修改以下几个地方: 1.将以下代码拷贝到工程根路径下的 .project 文件中的 <buildSpec& ...

  5. Python爬虫教程-05-python爬虫实现百度翻译

    使用python爬虫实现百度翻译功能 python爬虫实现百度翻译: python解释器[模拟浏览器],发送[post请求],传入待[翻译的内容]作为参数,获取[百度翻译的结果] 通过开发者工具,获取 ...

  6. ShareSDK分享和SMS的使用

    使用的是第三方的Mob来实现分享和发送短信的Demo 如图是项目的结构,结合了分享,发送短信,读取短信内容的功能 代码地址:https://github.com/1825492258/MobShare ...

  7. Hypver-V中的快照

    应用快照选项的区别: 获取并应用快照:对虚拟机当前的状态进行快照,然后恢复到所选的快照状态 应用:不保存当前虚拟机的状态,直接将其恢复到所选的快照状态

  8. windows 下 gdb 的安装

    在 windows 下 gcc/g++ 的安装 这篇文章中已经提到,用MinGW Installation Manager可以方便地管理 MinGW 组件,因此使用该软件安装 gdb . 打开 Min ...

  9. windows更新文件和windows.old文件夹清理

    在对Windows系统进行升级之后会发现C盘多出一个Windows.old文件夹,直接点击删除缺没有权限,不能进行删除. 在对window进行修复补丁时会产生大量的补丁更新文件,有时不清楚文件存在在哪 ...

  10. 沉淀再出发:java中的HashMap、ConcurrentHashMap和Hashtable的认识

    沉淀再出发:java中的HashMap.ConcurrentHashMap和Hashtable的认识 一.前言 很多知识在学习或者使用了之后总是会忘记的,但是如果把这些只是背后的原理理解了,并且记忆下 ...