iOS 圖片分享(長圖)

0.前言

分享出去的圖片總是和當前界面有些區(qū)別,為了用戶體驗,會在分享前生成需要的圖片。

剛開始做圖片分享嘗試將視圖拷貝,然后將拷貝的視圖加入到需要分享的頁面,但是子視圖用xib的話拷貝不出來,放棄。現(xiàn)在采用分享的時候?qū)⑿枰故镜囊晥D加在分享頁面,生成圖片后再加回原來的頁面(ps:如果分享的圖片就是當前界面就不用這么麻煩)。

1.生成圖片的方式

///根據(jù)一個View生成一個image
- (UIImage *)screenshotForView:(UIView *)view size:(CGSize)size {

    UIImage *image = nil;
    ///設置生成圖片的大小、是否有透明(如果視圖沒有透明視圖,就設置YES,效率更高),放大比例(設置0,系統(tǒng)就會自動進行最佳的縮放)
    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;
}
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容