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;

    }
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值