有没有办法在UIImage
中创建UITableView
?
我知道这段代码会从给定的UIImage
中抽取UIView
:
-(UIImage*) makeImageOutOfView:(UIView*)view {
UIGraphicsBeginImageContext(view.bounds.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
}
但它只会创建一个具有表格框架大小的图像。我想创建一个显示整个表格内容的图像。另一个问题是,不仅创建的图像仅限于表格的框架,而且在滚动表格后创建图像时会产生非常奇怪的结果(只有图像中显示的前6个图像中的可见单元格,而且全部,其他可见细胞未被绘制..)
编辑 - 我想创建一个从tableView内容中提取的图像,而不是设置tableView的背景来显示图像..
答案 0 :(得分:4)
我只是为你创建一个DEMO,并希望它可以帮助你像这样捕获表格图像: -
-(IBAction)savebutn:(id)sender
{
[tbl reloadData];
CGRect frame = tbl.frame;
frame.size.height = tbl.contentSize.height;
tbl.frame = frame;
UIGraphicsBeginImageContext(tbl.bounds.size);
[tbl.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *saveImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *imageData = UIImagePNGRepresentation(saveImage);
NSFileManager *fileMan = [NSFileManager defaultManager];
NSString *fileName = [NSString stringWithFormat:@"%d.png",1];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];
[fileMan createFileAtPath:pdfFileName contents:imageData attributes:nil];
}
这是拍摄图像的屏幕截图: -
捕获图像从上到下包含完整的表格单元格请下载它的演示: -
答案 1 :(得分:0)
您可以做的一件事是,创建一个UIView
,将所有单元格添加到您想要的图像中,然后使用您拥有的代码将UIView
转换为图像。
我认为这应该有用。
答案 2 :(得分:0)
- (UIImage *)imageWithTableView:(UITableView *)tableView{
UIImage* image = nil;
UIGraphicsBeginImageContextWithOptions(tableView.contentSize, NO, 0.0);
CGPoint savedContentOffset = tableView.contentOffset;
CGRect savedFrame = tableView.frame;
tableView.contentOffset = CGPointZero;
tableView.frame = CGRectMake(0, 0, tableView.contentSize.width, tableView.contentSize.height);
[tableView.layer renderInContext: UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
tableView.contentOffset = savedContentOffset;
tableView.frame = savedFrame;
UIGraphicsEndImageContext();
return image;
}