美文网首页
iOS 图片分享(长图)

iOS 图片分享(长图)

作者: daobao777 | 来源:发表于2020-06-06 09:48 被阅读0次

    0.前言

    分享出去的图片总是和当前界面有些区别,为了用户体验,会在分享前生成需要的图片。

    刚开始做图片分享尝试将视图拷贝,然后将拷贝的视图加入到需要分享的页面,但是子视图用xib的话拷贝不出来,放弃。现在采用分享的时候将需要展示的视图加在分享页面,生成图片后再加回原来的页面(ps:如果分享的图片就是当前界面就不用这么麻烦)。

    1.生成图片的方式

    ///根据一个View生成一个image
    - (UIImage *)screenshotForView:(UIView *)view size:(CGSize)size {
    
        UIImage *image = nil;
        ///设置生成图片的大小、是否有透明(如果视图没有透明视图,就设置YES,效率更高),放大比例(设置0,系统就会自动进行最佳的缩放)
        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;
    }
    

    相关文章

      网友评论

          本文标题:iOS 图片分享(长图)

          本文链接:https://www.haomeiwen.com/subject/hpcazhtx.html