『ios』view和tableview的截圖和圖片拼接
專案中有這麼個需求,擷取當前螢幕並拼接上公司的二維碼。說下解決思路。
首先上面的圖片肯定不符合我的需求
-(UIImage *)screenShotFromView:(UIView *)view{
UIGraphicsBeginImageContextWithOptions(view.frame.size,NO, 0);
[[UIColor clearColor] setFill];
[[UIBezierPath bezierPathWithRect:view.bounds] fill];
CGContextRef ctx = UIGraphicsGetCurrentContext();
[view.layer renderInContext:ctx];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;}
這是方法。有句話叫做需求驅動開發。請往下看。
我現在的需求是擷取整個tableview,所以我現在需要當前畫布的大小要是tableview的contentsize。也就是說tableview.frame就是當前tableview的contentsize.
所以看下面的方法就明白什麼意思了。
UIImage* image = nil;
[self.tableView reloadData];
[self.tableView layoutIfNeeded];
UIGraphicsBeginImageContextWithOptions(self.tableView.contentSize, YES, 0.0);
//儲存collectionView當前的偏移量
CGPoint savedContentOffset = self.tableView.contentOffset;
CGRect saveFrame = self.tableView.frame;
//將collectionView的偏移量設定為(0,0)
self.tableView.contentOffset = CGPointZero;
self.tableView.frame = CGRectMake(0, 0, self.tableView.contentSize.width, self.tableView.contentSize.height);
[self.tableView reloadData];
[self.tableView layoutIfNeeded];
self.tableView.frame = CGRectMake(0, 0, self.tableView.contentSize.width, self.tableView.contentSize.height);
// LDLog(@"%@----",NSStringFromCGRect(self.tableView.frame));
//在當前上下文中渲染出collectionView
[self.tableView.layer renderInContext:UIGraphicsGetCurrentContext()];
//擷取當前上下文生成Image
image = UIGraphicsGetImageFromCurrentImageContext();
//恢復collectionView的偏移量
self.tableView.contentOffset = savedContentOffset;
self.tableView.frame = saveFrame;
UIGraphicsEndImageContext();
if (image != nil) {
return image;
}else {
return nil;
}
至於圖片的拼接。
- (UIImage *)addHead:(UIImage *)headImage foot:(UIImage *)footImage toMaster:(UIImage *)masterImage {
CGSize size;
size.width = masterImage.size.width;
CGFloat headHeight = !headImage? 0:headImage.size.height;
CGFloat footHeight = !footImage? 0:footImage.size.height;
size.height = masterImage.size.height + headHeight + footHeight;
UIGraphicsBeginImageContextWithOptions(size, YES, 0.0);
if (headImage)
[headImage drawInRect:CGRectMake(0, 0, masterImage.size.width, headHeight)];
[masterImage drawInRect:CGRectMake(0, headHeight, masterImage.size.width, masterImage.size.height)];
if (footImage)
[footImage drawInRect:CGRectMake(0, masterImage.size.height + headHeight, masterImage.size.width, footHeight)];
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultImage;
}
這樣就完美解決問題。效果圖如下
ios自習室歡迎進入,一起學習一起進步。
相關文章
- Android截圖和指定View生成截圖分享AndroidView
- DDGScreenShot —iOS 圖片處理--多圖片拼接 (swift)iOSSwift
- Android 和 iOS 圖片輪播AndroidiOS
- iOS裡關於圖片的Crop和ResizeiOS
- Java後臺Html轉圖片和獲取頁面屬性值,及圖片拼接JavaHTML
- MacOS專業截圖指南——截圖技巧和截圖工具分享Mac
- Android自定義View之圖片外形特效——輕鬆實現圓角和圓形圖片AndroidView特效
- iOS 截圖的那些事兒iOS
- python實現橫向拼接圖片Python
- 【326】PIL 截圖及圖片識別
- C# 截圖並儲存為圖片C#
- HTML 連結和圖片HTML
- PDF 和圖片互轉
- LODOP 列印圖片和表格
- cocos2dx之儲存截圖圖片
- GifCam,Gif動態圖片截圖小軟體
- 在讀取資料時拼接圖片域名
- python使用pillow和opencv生成圖片縮圖PythonOpenCV
- 『自定義View實戰』—— 仿ios圖示下載viewViewiOS
- iOS中的圖片使用方式、記憶體對比和最佳實踐iOS記憶體
- Electron 截圖踩坑和優化集合優化
- Snipaste:Mac和Windows上最好用的截圖軟體,讓截圖變得簡單高效ASTMacWindows
- Python 提取PDF文字和圖片Python
- iOS 圖片壓縮方法iOS
- iOS開發-圖片UIImageiOSUI
- 修改SVG圖片的大小和顏色SVG
- labelme標註後的圖片切成小圖和小jsonJSON
- win10截長圖的方法_win10電腦怎麼截長圖片Win10
- iOS UIScrollVIew UITableView UIwebView WKWebView 截全圖,生成全圖方法iOSUIWebView
- Artstudio Pro Mac,繪圖和圖片編輯工具Mac繪圖
- 圖片拼接大師v1.0安卓版安卓
- Spring Boot MVC 單張圖片和多張圖片上傳 和通用檔案下載Spring BootMVC
- 對html進行截圖並儲存為本地圖片HTML地圖
- Laravel editor.md 支援截圖 / 貼上上傳圖片Laravel
- Flutter學習 ---- 螢幕截圖和高斯模糊Flutter
- 實驗一和實驗二截圖
- Flutter學習 —- 螢幕截圖和高斯模糊Flutter
- Java | 圖片地址查詢返回引數自動拼接圖片字首地址Java