0.前言
分享出去的圖片總是和當前界面有些區(qū)別,為了用戶體驗,會在分享前生成需要的圖片。
剛開始做圖片分享嘗試將視圖拷貝,然后將拷貝的視圖加入到需要分享的頁面,但是子視圖用xib的話拷貝不出來,放棄。現(xiàn)在采用分享的時候?qū)⑿枰故镜囊晥D加在分享頁面,生成圖片后再加回原來的頁面(ps:如果分享的圖片就是當前界面就不用這么麻煩)。
1.生成圖片的方式
///根據(jù)一個View生成一個image
- (UIImage *)screenshotForView:(UIView *)view size:(CGSize)size {
UIImage *image = nil;
///設置生成圖片的大小、是否有透明(如果視圖沒有透明視圖,就設置YES,效率更高),放大比例(設置0,系統(tǒng)就會自動進行最佳的縮放)
UIGraphicsBeginImageContextWithOptions(size, NO, 0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
2.分享長圖(scrollView、tableView),以tableView為例
tableView會有復用回收機制,只要改變父視圖的高度即可
-(UIImage *)createShareImage{
//改變父視圖高度和tableView高度
self.view.height = self.tableView.contentSize.height;
self.tableView.height = self.tableView.contentSize.height;
//刷新布局
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
//分享界面加上視圖(detail)
[self.detailView addSubview:self.tableView];
self.detailView.height = self.tableView.height;
UIImage *img = [self screenshotForView:self.detailView size:self.detailView.frame.size];
[self.view addSubview:self.tableView];
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.view);
}];
return img;
}