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方法,害