iOS-截取TableView生成图片

先看一下实例效果:

如果所示,这是一个在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

时间: 2025-01-05 22:17:35

iOS-截取TableView生成图片的相关文章

iOS 在TableView的Cell之间设置空白间隔空间

1.设置section的数目,即是你有多少个cell - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 3; // in your case, there are 3 cells } 2.对于每个section返回一个cell - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)secti

ios截取当前屏幕

ios截取当前屏幕 by 伍雪颖 - (UIImage *)getSnapshotImage { UIGraphicsBeginImageContextWithOptions(CGSizeMake(CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame)), NO, 1); [self.view drawViewHierarchyInRect:CGRectMake(0, 0, CGRectGetWidth(self.vie

[iOS] Create TableView & customize UITableViewCell

1. First artical, notice the last thing - Connecting the DataSource and Delegate: http://www.appcoda.com/ios-programming-tutorial-create-a-simple-table-view-app/ 2. Second Artical: https://medium.com/@musawiralishah/creating-custom-uitableviewcell-us

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

tableview中的第一个cell 里上部 有空白区域,大概64像素 在viewDidLoad中加入如下代码 self.automaticallyAdjustsScrollViewInsets = NO; 原文地址:iOS开发tableView去掉顶部上部空表区域

iOS indexed tableview

http://stackoverflow.com/questions/18577462/how-to-make-a-tableview-divided-into-sections-by-letter-like-the-contacts-app http://www.iphonedevcentral.com/indexed-uitableview-tutorial/ http://furnacedigital.blogspot.com/2012/02/uitableview-sections.ht

IOS中TableView的用法

IOS中TableView的用法 一.UITableView 1.数据展示的条件 1> UITableView的所有数据都是由数据源(dataSource)提供的,所以要想在UITableView展示数据,必须设置UITableView的dataSource数据源对象 2> 要想当UITableView的dataSource对象,必须遵守UITableViewDataSource协议,实现相应的数据源方法 3> 当UITableView想要展示数据的时候,就会给数据源发送消息(调用数据源

iOS实现tableView下拉搜索功能

iOS实现tableView下拉搜索功能 地址:github地址 效果展示 JRSearchBar /// 搜索 -> array - (NSMutableArray *)searchTest:(NSString *)searchText InArray:(NSArray *)array;

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

[原]iOS 在tableView上添加button导致按钮没有点击效果和不能滑动的问题 2014-10-31阅读202 评论0 转载请注明出处. 今天在调试代码的时候,在tableviewcell上添加button,发现button快速点击的话,是看不出点击效果的,查找资料发现, ios7上UITableViewCell子层容器是UITableViewCellScrollView, ios6的则是UITableViewCellContentView.点击效果应该是被ScrollView的触摸延

iOS 在tableview的cell中的button上,添加选中状态的解答

大家都知道tableview的复用当然不知道的话可以个我留言或者在网上找  在这我就不多说了: 红色就是选中状态,但是这时候我们会发现往下拉当cell消失后出来新的cell中的button也是选中状态.话不多说下面上解决方法的代码! -(NSMutableArray *)boolArr{ //创建一个数组在这里数组中的NSNumber对象的下标是于 indexPath一一对应的这里我给他一百个根据自身的情况赋值 if (_boolArr==nil) { NSMutableArray *arr =