tableview 截图
//将tableview 生成图片
+ (UIImage*)getTableViewimage:(UITableView*)tableView
{
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]){
UIGraphicsBeginImageContextWithOptions(tableView.contentSize, NO, [UIScreen mainScreen].scale);
}else{
UIGraphicsBeginImageContext(tableView.contentSize);
}
//先保存原来frame 和 偏移量
CGPointsavedContentOffset = tableView.contentOffset;
CGRectsavedFrame =tableView.frame;
CGSizecontentSize = tableView.contentSize;
CGRectoldBounds = tableView.bounds;
if(@available(iOS13, *)){
//iOS 13 系统截屏需要改变tableview 的bounds
[tableView.layersetBounds:CGRectMake(oldBounds.origin.x, oldBounds.origin.y, contentSize.width, contentSize.height)];
}
//偏移量归零
tableView.contentOffset = CGPointZero;
//frame变为contentSize
tableView.frame = CGRectMake(0, 0,tableView.contentSize.width, tableView.contentSize.height);
//截图
[tableView.layer renderInContext:UIGraphicsGetCurrentContext()];
if(@available(iOS13,*)){
[tableView.layersetBounds:oldBounds];
}
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//还原frame 和 偏移量
tableView.contentOffset= savedContentOffset;
tableView.frame= savedFrame;
returnimage;
}
方法没问题,但是一直出现超出屏幕部分截图失败问题,百度很多,都么解决
结果发现是调了viewDidLayoutSubviews方法,害