最近很多app都喜欢分享图片,多数为长图模式,好多工程师可能对于如何做到这样的效果有一定的困惑,下面就来简单说明一下.
效果如下:

先获取scrollView上面的内容生成图片.
pragma mark -- 获取
<pre><code> - (UIImage *)captureScrollView:(UIScrollView )scrollView
{
UIImage image = nil;
UIGraphicsBeginImageContext(scrollView.contentSize);
{
CGPoint savedContentOffset = scrollView.contentOffset;
CGRect savedFrame = scrollView.frame;
scrollView.contentOffset = CGPointZero;
scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);
//优化图片截取不清晰
UIGraphicsBeginImageContextWithOptions(scrollView.frame.size, NO, [UIScreen mainScreen].scale);
[scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
scrollView.contentOffset = savedContentOffset;
scrollView.frame = savedFrame;
}
UIGraphicsEndImageContext();
if (image != nil) {
return image;
}
return nil;
}
</code></pre>
然后将scrollView上的内容与logo的图片进行拼接
<pre><code>- (UIImage *)getShareImageWithContentImage:(UIImage *)contentImage logoImage:(UIImage *)logoImage
{
//根据图片与屏幕进行同比例缩放.
CGFloat contentHeight = HDScreenSize.width * (contentImage.size.height / contentImage.size.width);
CGFloat logoHeight = HDScreenSize.width * (logoImage.size.height / logoImage.size.width);
//设置对应的屏幕分辨率,UIGraphicsBeginImageContext(CGSize size)这个方法,是你所截取的图片模糊的关键,需要配合屏幕的分辨率进行设置,所以采用下面那种方式.
UIGraphicsBeginImageContextWithOptions(CGSizeMake(HDScreenSize.width, contentHeight + logoHeight), NO, [UIScreen mainScreen].scale);
[contentImage drawInRect:CGRectMake(0, 0, HDScreenSize.width, contentHeight)];
[logoImage drawInRect:CGRectMake(0, contentHeight, HDScreenSize.width, logoHeight)];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultingImage;
}