首页 > 代码库 > TableView 截图
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 3013 #define kTableViewHeight 7614 15 @interface MainViewController ()16 @property (strong, nonatomic) IBOutlet UITableView *tableView;17 @end18 19 @implementation MainViewController20 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 - UITableViewDataSource40 - (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 - UITableViewDelegate59 - (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 Method67 - (UIImage*)screenShotForIndexPaths:(NSArray*)indexPaths68 {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上渲染的origin84 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
TableView 截图
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。