IOS实现长图截取
總結(jié)一下最近遇到的功能開發(fā)。
因為IOS自帶的截圖并不能截取長圖,所以為了更好的用戶體驗,我們需要開發(fā)對應(yīng)的功能。
- (UIImage *)screenShotWithSize:(CGSize )size {UIImage* image = nil;/**UIGraphicsBeginImageContextWithOptions有三個參數(shù)*size bitmap上下文的大小,就是生成圖片的size*opaque 是否不透明,當(dāng)指定為YES的時候圖片的質(zhì)量會比較好*scale 縮放比例,指定為0.0表示使用手機主屏幕的縮放比例*/UIGraphicsBeginImageContextWithOptions(size, YES, [UIScreen mainScreen].scale);//保存tableView當(dāng)前的偏移量CGPoint savedContentOffset = self.tableView.contentOffset;CGRect saveFrame = self.tableView.frame;CGRect saveViewFrame = self.view.frame;//將tableView的偏移量設(shè)置為(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);//在當(dāng)前上下文中渲染出tableView[self.view.layer renderInContext: UIGraphicsGetCurrentContext()];//截取當(dāng)前上下文生成Imageimage = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();//恢復(fù)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的高度,實現(xiàn)長截圖功能。同理,也可以根據(jù)該方法,實現(xiàn)collectionView和scrollView的全截圖。至于后續(xù)是保存本地還是分享到三方平臺,這個就需要各位看官自己去實現(xiàn)了。
PS:這個方法有些時候會造成截圖不完整,經(jīng)過調(diào)查發(fā)現(xiàn),是因為沒有關(guān)閉self-sizing,這個時候就需要下方的代碼了。
//關(guān)閉self-sizing _tableView.estimatedRowHeight = 0; _tableView.estimatedSectionHeaderHeight = 0; _tableView.estimatedSectionFooterHeight = 0;?
總結(jié)
 
                            
                        - 上一篇: 近世代数第一章总结
- 下一篇: 用计算机打字英语单词,常用计算机专业英语
