美文网首页
iOS 截图、截长图、图片拼接

iOS 截图、截长图、图片拼接

作者: OrrHsiao | 来源:发表于2018-10-30 11:30 被阅读0次

图片拼接

/* Image 拼接
 * masterImage  主图片
 * headImage   头图片
 * footImage   尾图片
 */
+ (UIImage *)addHeadImage:(UIImage *)headImage footImage:(UIImage *)footImage toMasterImage:(UIImage *)masterImage {
    
    CGSize size;
    size.width = masterImage.size.width;
    
    CGFloat headHeight = !headImage? 0:size.width/headImage.size.width*headImage.size.height;
    CGFloat footHeight = !footImage? 0:size.width/footImage.size.width*footImage.size.height;
    
//    CGFloat headHeight = !headImage? 0:headImage.size.height/2.0;
//    CGFloat footHeight = !footImage? 0:footImage.size.height/2.0;
    
    size.height = masterImage.size.height + headHeight + footHeight;
    
    UIGraphicsBeginImageContextWithOptions(size, YES, 0.0);
    
    if (headImage)
        [headImage drawInRect:CGRectMake(0, 0, masterImage.size.width, headHeight)];
    
    
    [masterImage drawInRect:CGRectMake(0, headHeight, masterImage.size.width, masterImage.size.height)];
    
    if (footImage)
        [footImage drawInRect:CGRectMake(0, masterImage.size.height + headHeight, masterImage.size.width, footHeight)];
    
    UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    return resultImage;
}

截图

/**
 获取一个view的截图,注意,只能截取能看的见的部分
 
 @param view view
 @param size 截图大小
 @return image
 */
+ (UIImage *)makeImageWithView:(UIView *)view withSize:(CGSize)size
{
    // 下面方法,第一个参数表示区域大小。第二个参数表示是否是非透明的。如果需要显示半透明效果,需要传NO,否则传YES。第三个参数就是屏幕密度了,关键就是第三个参数 [UIScreen mainScreen].scale。
    UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

UIScroolView、UITableView截取长图

截取长图部分我采用的逻辑是,首先获取contentSize,将ScroolView或TableView的高度设置为contentSize大小,设置[[self.tableView layer] renderInContext:UIGraphicsGetCurrentContext()];然后截取图片,注意:在重设ScroolView或TableView的高度后,延迟执行了截图方法,因为立马截图超出视图部分的截图无法截出

/**
 点击分享label
 */
- (void)clickShareLabel
{
    //重新设置控件的大小,以能显示所有内容
    [self.tableView mas_remakeConstraints:^(MASConstraintMaker *make) {
        make.left.right.offset(0);
        make.top.equalTo(self.customNavBar.mas_bottom);
        make.height.offset(self.tableView.contentSize.height);
    }];
    //延迟截屏
    [self performSelector:@selector(beginCapture) withObject:nil afterDelay:0.1];
}

#pragma mark 生成image
- (UIImage *)captureImage
{
    //设置截屏大小
    UIGraphicsBeginImageContextWithOptions(self.tableView.contentSize, NO, 0.0);
    [[self.tableView layer] renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

/**
 开始截图
 */
- (void)beginCapture
{
    //tableview的截图
    UIImage *image = [self captureImage];
    CoinDetailShareViewController *vc = [[CoinDetailShareViewController alloc] init];
    vc.image = image;
    vc.coinName = self.coinName;
    [self presentViewController:vc animated:YES completion:^{
        //将控件大小设置回去
        [self.tableView mas_remakeConstraints:^(MASConstraintMaker *make) {
            make.left.right.offset(0);
            make.bottom.equalTo(self.collectLabel.mas_top);
            make.top.equalTo(self.customNavBar.mas_bottom);
        }];
    }];
}

相关文章

  • iOS 截图、截长图、图片拼接

    图片拼接 截图 UIScroolView、UITableView截取长图 截取长图部分我采用的逻辑是,首先获取co...

  • iOS 截屏,截取长图,图片拼接

    1.截取制定范围(非长图) 2.截取长图,如TableView,CollectionView 3.图片拼接 将两张...

  • swift 截屏,长图处理

    起因: 公司项目需要截图,截长图 问题: 如何截图,截长图,网上的资料往往不是太长,就是没解决问题,甚至有不少bu...

  • Annotable:当标注比截图还简单

    手机截图有两难,一是截长图,二是截图标注。 手机截图只能一屏一屏截,想要截一张长图,必须要借助其他爱屁屁或者直接上...

  • 图片拼接

    图片拼接小工具,帮助你简单快速拼接长图~

  • android搞个截图

    实现 1.单个view的截图2.webview的截长图3.scrollView的截图4.截屏 1.单个View的截...

  • Excel的截图、抠图和美图

    一 、截图 截excel表格的图 截桌面 二。抠图 图片工具 - 删除背景- 选择抠除区域 三 修图美图 1. 设...

  • 微信上最好用的「拼长图」小程序,了解一下?

    微信上最好用的「拼长图」微信小程序来啦! 「拼长图」不仅支持普通拼接,还能拼接电影台词,iOS版更有去重拼接这一大...

  • iOS截长图

    最近给老妈发地图导航的截图,截的图是长图,就自己简单的实现了一下。话不多说,直接上代码: - (void)save...

  • iOS 屏幕截图、添加水印、截长图

    春水初生,春林初盛,春风十里,不如你。 前言 在开发过程中,不免遇到屏幕截图分享,截图添加水印等。本文就记录一下自...

网友评论

      本文标题:iOS 截图、截长图、图片拼接

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