『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自習室歡迎進入,一起學習一起進步。
相關文章
- iOS-圖片水印,圖片裁剪和螢幕截圖iOS
- TableView ScrollreView 截圖 擷取全屏 圖片模糊View
- Android截圖和指定View生成截圖分享AndroidView
- java匯出圖片,拼接多個圖片, 拼接文字和圖片 到一個圖片檔案Java
- DDGScreenShot —iOS 圖片處理--多圖片拼接 (swift)iOSSwift
- Android 合併生成分享圖片(View截圖)AndroidView
- Android 普通View截圖 RecyclerView截圖 ScrollView截圖分享AndroidView
- Activity轉換為View和把圖片轉換為ViewView
- Java後臺Html轉圖片和獲取頁面屬性值,及圖片拼接JavaHTML
- MacOS專業截圖指南——截圖技巧和截圖工具分享Mac
- 用Python為iOS10生成圖示和截圖PythoniOS
- Android 和 iOS 圖片輪播AndroidiOS
- iOS裡關於圖片的Crop和ResizeiOS
- iOS儲存網路圖片和讀取本地沙盒圖片iOS
- ios截圖功能iOS
- ios 程式內截圖iOS
- Android自定義View之圖片外形特效——輕鬆實現圓角和圓形圖片AndroidView特效
- iOS 截圖的那些事兒iOS
- iOS螢幕截圖的方法iOS
- ios 圖片部分截圖iOS
- python實現橫向拼接圖片Python
- C# 截圖並儲存為圖片C#
- ios裁剪圖片iOS
- 使用CSS mask 實現圖片的斜線拼接CSS
- 為view設定背景圖片View
- HTML 連結和圖片HTML
- iOS - Swift - TableView、CollectionView 空白佔點陣圖 EmptyDataSetiOSSwiftView
- GifCam,Gif動態圖片截圖小軟體
- View的載入原理和攔截方式View
- 在讀取資料時拼接圖片域名
- 圖片拼接大師v1.0安卓版安卓
- iOS圖片變灰iOS
- IOS圖片壓縮iOS
- IOS 平鋪圖片iOS
- iOS 圖片處理iOS
- Electron 截圖踩坑和優化集合優化
- Snipaste:Mac和Windows上最好用的截圖軟體,讓截圖變得簡單高效ASTMacWindows
- win10截長圖的方法_win10電腦怎麼截長圖片Win10