iOS分享页面部分内容(部分截屏)

2022-02-21  本文已影响0人  肉肉要次肉

先直接上图,要实现分享一张图片,如下图

分享出去的图片中不应带有下面4个按钮,所以需要截图截在分割线处将图片转换为NSData二进制.

考虑到屏幕适配问题,所以将截图部分用scrollview来承载,截图通过截取scrollview视图即可。

#pragma mark-- 按视图承载所有内容截屏

- (void)snapshotScreenInView:(UIView *)view

{

    CGSizesize = view.bounds.size;

    UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale);

    CGRectrect = view.frame;

    //  自iOS7开始,UIView类提供了一个方法-drawViewHierarchyInRect:afterScreenUpdates: 它允许你截取一个UIView或者其子类中的内容,并且以位图的形式(bitmap)保存到UIImage中

    [viewdrawViewHierarchyInRect:rect afterScreenUpdates:YES];

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

}

拓展:下面的方法截图后的图片会使毛玻璃效果失效,所以用以上方法即可

//    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]){

//        UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [UIScreen mainScreen].scale);

//    } else {

//        UIGraphicsBeginImageContext(view.bounds.size);

//    }

//    [view.layer renderInContext:UIGraphicsGetCurrentContext()];

//

//    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

//

//    UIGraphicsEndImageContext();

//

//    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

实现保存图片

//参数1:图片对象

    //参数2:成功方法绑定的target

    //参数3:成功后调用方法

    //参数4:需要传递信息(成功后调用方法的参数)

    UIImageWriteToSavedPhotosAlbum(image,self,@selector(image:didFinishSavingWithError:contextInfo:),nil);

实现方法:

- (void)image:(UIImage*)imagedidFinishSavingWithError:(NSError*)errorcontextInfo:(void*)contextInfo{

    if(error) {

        [YJProgressHUDshowMessage:@"保存失败"inView:self.view];

    }else{

        [YJProgressHUDshowMessage:@"保存成功"inView:self.view];

    }

}

上一篇下一篇

猜你喜欢

热点阅读