首页 > 编程知识 正文

ios长截方法,ios怎样截取长

时间:2023-05-05 07:35:43 阅读:237349 作者:4223

总结一下最近遇到的功能开发。

因为IOS自带的截图并不能截取长图,所以为了更好的用户体验,我们需要开发对应的功能。

- (UIImage *)screenShotWithSize:(CGSize )size { UIImage* image = nil; /* *UIGraphicsBeginImageContextWithOptions有三个参数 *size bitmap上下文的大小,就是生成图片的size *opaque 是否不透明,当指定为YES的时候图片的质量会比较好 *scale 缩放比例,指定为0.0表示使用手机主屏幕的缩放比例 */ UIGraphicsBeginImageContextWithOptions(size, YES, [UIScreen mainScreen].scale); //保存tableView当前的偏移量 CGPoint savedContentOffset = self.tableView.contentOffset; CGRect saveFrame = self.tableView.frame; CGRect saveViewFrame = self.view.frame; //将tableView的偏移量设置为(0,0) self.tableView.contentOffset = CGPointZero; self.tableView.frame = CGRectMake(0, saveFrame.origin.y, self.tableView.contentSize.width, self.tableView.contentSize.height); self.view.frame = CGRectMake(0, 0, size.width,size.height); //在当前上下文中渲染出tableView [self.view.layer renderInContext: UIGraphicsGetCurrentContext()]; //截取当前上下文生成Image image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); //恢复tableView的偏移量 self.tableView.frame = saveFrame; [self.tableView setContentOffset:savedContentOffset animated:NO]; self.view.frame = saveViewFrame; if (image != nil) { return image; }else { return nil; }}

以view作为容器,在截图前后通过变换view和tableView的高度,实现长截图功能。同理,也可以根据该方法,实现collectionView和scrollView的全截图。至于后续是保存本地还是分享到三方平台,这个就需要各位看官自己去实现了。

PS:这个方法有些时候会造成截图不完整,经过调查发现,是因为没有关闭self-sizing,这个时候就需要下方的代码了。

//关闭self-sizing_tableView.estimatedRowHeight = 0;_tableView.estimatedSectionHeaderHeight = 0;_tableView.estimatedSectionFooterHeight = 0;

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。