美文网首页iOS图片处理技术
iOS截屏( UIView,UITableView,UIColl

iOS截屏( UIView,UITableView,UIColl

作者: zlcode | 来源:发表于2016-08-18 11:42 被阅读117次

我的博客原文地址

主要代码

UIView+Cutter.m

/**
 *  根据视图尺寸获取视图截屏
 *
 *  @return UIImage 截取的图片
 */
- (UIImage*)viewCutter
{
    UIGraphicsBeginImageContextWithOptions(self.bounds.size,NO,[[UIScreen mainScreen] scale]);
    
    // 方法一 有时导航条无法正常获取
    // [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    // 方法二 iOS7.0 后推荐使用
     [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
    
    UIImage*img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return img;
}

UIScrollView+Cutter.m

/**
 *  根据视图尺寸获取视图截屏(一屏无法显示完整),适用于UIScrollView UITableviewView UICollectionView UIWebView
 *
 *  @return UIImage 截取的图片
 */
- (UIImage *)scrollViewCutter
{
    //保存
    CGPoint savedContentOffset = self.contentOffset;
    CGRect savedFrame = self.frame;
    
    self.contentOffset = CGPointZero;
    self.frame = CGRectMake(0, 0, self.contentSize.width, self.contentSize.height);
    
    UIImage *image = [self viewCutter];
    
    //还原数据
    self.contentOffset = savedContentOffset;
    self.frame = savedFrame;
    
    return image;
    
    
}

代码示例

/*

// 使用说明

// 没有导航和tabbar
UIImage *image = [self.view viewCutter];

// 有导航和tabbar
UIImage *image = [self.navigationController.view viewCutter];

// UICollectionView
UIImage *image = [self.collectionView scrollViewCutter];

// UITableView
UIImage *image = [self.tableView scrollViewCutter];

// UIWebView
UIImage *image = [self.webView scrollViewCutter];

*/

图片示例:

Cutter-1
Cutter-2
Cutter-3

完整代码下载

参考

https://developer.apple.com/library/ios/qa/qa1817/_index.html#//apple_ref/doc/uid/DTS40014134

相关文章

  • iOS截屏( UIView,UITableView,UIColl

    我的博客原文地址 主要代码 UIView+Cutter.m UIScrollView+Cutter.m 代码示例 ...

  • iOS屏幕截图功能

    iOS7.0之前的系统,可以通过以下代码实现截屏功能。 iOS7.0之后,系统中封装了截屏的方法- (UIView...

  • ios:instrument调试中发现VM:CGRaster D

    最近项目中有截屏分享的需求,截取整个uitableview的contentview,然后分享。 截屏的思路是分段截...

  • flutter:截屏

    1.flutter-截屏组件 2.flutter-截屏插件 3.flutter-iOS原生截屏 iOS代码 4.获...

  • (最新)iOS截屏

    ios webview 截屏:ios截屏 前言:介绍一下截屏有很多种做法1:截当前屏幕内容2:截整个视图的所有内容...

  • ios截屏

    ios截屏

  • DZNEmptyDataSet——空白数据集显示框架

    大多数应用程序会显示内容列表、数据集(在 iOS 程序猿眼里,这里通常指的是 UITableView、UIColl...

  • 常用的分类

    转换坐标系 图像截屏 - (UIImage *)screenShotOfView:(UIView *)view {...

  • iOS 应用内截屏分享

    需求:捕获用户截屏操作,并建议用户截屏后的操作。虽然iOS11 有系统的截屏,但 APP 内截屏可便捷操作。 封装...

  • 手机截屏获取状态栏

    iOS方法中截屏中并没有状态栏,但是可以在UIView的+ (void)load加载方法中去获取到。 新建一个UI...

网友评论

    本文标题:iOS截屏( UIView,UITableView,UIColl

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