根据视图生成卡片分享的功能非常常见,从视图生成一张图片有很多种做法,我要讲的是用scrollView生成,在这里用scrollView有个妙用,就拿我项目中遇到的来说,生成的长图要求是屏幕宽比例,而项目中视图上显示的是如下图所示的:
用笨方法也能解决,显示的时候用一个视图,生成的图片用一个看不见的视图布局,然后生成就行了。但这样太过于麻烦,用scrollView,利用它的transform属性就超级简单了。
可以一开始就根据屏幕宽比例布局,布局完成后,设置scrollView的transformMakeScale即可
CGAffineTransformMakeScale(0.73, 0.73)
这个比例根据自己实际需要设置即可
下面贴出生成长图的方法,我自己也已经写入了一个个人库中,作为scrollView的一个分类方法使用
- (UIImage *)captureScrollView {
UIImage *image = nil;
UIGraphicsBeginImageContextWithOptions(self.contentSize, NO, [UIScreen mainScreen].scale);
CGPoint savedContentOffset = self.contentOffset;
CGRect savedFrame = self.frame;
self.contentOffset = CGPointZero;
self.frame = CGRectMake(0, 0, self.contentSize.width, self.contentSize.height);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
self.contentOffset = savedContentOffset;
self.frame = savedFrame;
UIGraphicsEndImageContext();
return image;
}
这个就是生成长图分享后的效果
如果有兴趣,可以去我的GitHub下载源码查看,这是我个人写的一些项目中常见的工具,包括微信图片浏览器效果,各种动画效果等。