iOS-帶layer處理的View 生成圖片

隨着分享內容的需求的不斷完善,將當前頁面的內容分享出去變成了產品經理的需求,之前常規的的分享顯然已經不能滿足,紛紛開始定製分享的圖片內容。尤其以區塊鏈相關的App特別多,作爲運營拉新的手段,需要及時的將行情數據、免費贈送的token信息發送出去,激活用戶的熱情。通常看到的操作方式如下即:分享的圖片需要上下拼接內容,上半部分顯示爲App名稱、簡介, 下半部分爲註冊二維碼。但是行情頁面的分享已經超過了常規的屏幕可見內容, 需要將tableview未顯示的內容展示出來,無疑增加了難度。

下面將常用的幾種View生成圖片的方法做個歸類:

1.將傳入的View生成圖片:

+ (UIImage *)makeImageWithView:(UIView *)view{

        CGSize s = view.bounds.size;

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

        [view.layer renderInContext:UIGraphicsGetCurrentContext()];

        UIImage*image = UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();

        return image;

    }

2.將傳入的View生成圖片,可以顯示layer(分享分時圖、k線)

+ (UIImage *)imageFromView:(UIView *)view{

        UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0.0);

        [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];

        UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();

        return theImage;

    }

3.將tableview 生成圖片

+ (UIImage *)getTableViewimage:(UITableView *)tableview{

        UIImage* viewImage = nil;

        UIScrollView *scrollView = tableview;

        UIGraphicsBeginImageContextWithOptions(CGSizeMake(scrollView.contentSize.width, scrollView.contentSize.height), NO, 0.0);

        {

            CGPoint savedContentOffset = scrollView.contentOffset;

            CGRect savedFrame = scrollView.frame;

            

            scrollView.contentOffset = CGPointZero;

            scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);

            

            [scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];

            viewImage = UIGraphicsGetImageFromCurrentImageContext();

            

            scrollView.contentOffset = savedContentOffset;

            scrollView.frame = savedFrame;

        }

        UIGraphicsEndImageContext();

        if (viewImage != nil) {

            return viewImage;

        }

        return nil;

    }

4.圖片拼接

+ (UIImage *)addSlaveImage:(UIImage *)slaveImage toMasterImage:(UIImage *)masterImage {

        CGSize size;

        size.width = masterImage.size.width;

        size.height = masterImage.size.height + slaveImage.size.height;

        UIGraphicsBeginImageContextWithOptions(size, YES, 0.0);

        [masterImage drawInRect:CGRectMake(0, 0, masterImage.size.width, masterImage.size.height)];

        [slaveImage drawInRect:CGRectMake(0, masterImage.size.height, masterImage.size.width, slaveImage.size.height)];

        UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();

        return resultImage;

    }
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章