最近很多app都喜歡分享圖片,多數(shù)為長圖模式,好多工程師可能對于如何做到這樣的效果有一定的困惑,下面就來簡單說明一下.
效果如下:

先獲取scrollView上面的內(nèi)容生成圖片.
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);
//優(yōu)化圖片截取不清晰
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上的內(nèi)容與logo的圖片進行拼接
<pre><code>- (UIImage *)getShareImageWithContentImage:(UIImage *)contentImage logoImage:(UIImage *)logoImage
{
//根據(jù)圖片與屏幕進行同比例縮放.
CGFloat contentHeight = HDScreenSize.width * (contentImage.size.height / contentImage.size.width);
CGFloat logoHeight = HDScreenSize.width * (logoImage.size.height / logoImage.size.width);
//設(shè)置對應(yīng)的屏幕分辨率,UIGraphicsBeginImageContext(CGSize size)這個方法,是你所截取的圖片模糊的關(guān)鍵,需要配合屏幕的分辨率進行設(shè)置,所以采用下面那種方式.
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;
}