UIView的无损截图

UIView的无损截图

 

 

说明

1. 烂大街的代码

2. 写成category后,方便直接从drawRect中获取绘制出来的图片

3. 可以直接绘制图片供按钮设置背景图片用

4. 无损截图(包括alpha通道值也被无损保存)

 

源码

//
//  UIView+ScreensShot.h
//  ColorfulView
//
//  Created by YouXianMing on 15/7/17.
//  Copyright (c) 2015年 YouXianMing. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface UIView (ScreensShot)

/**
 *  无损截图
 *
 *  This function may be called from any thread of your app.
 *
 *  @return 返回生成的图片
 */
- (UIImage *)screenShot;

@end
//
//  UIView+ScreensShot.m
//  ColorfulView
//
//  Created by YouXianMing on 15/7/17.
//  Copyright (c) 2015年 YouXianMing. All rights reserved.
//

#import "UIView+ScreensShot.h"
#import <objc/runtime.h>

@implementation UIView (ScreensShot)

- (UIImage *)screenShot {

    if (self && self.frame.size.height && self.frame.size.width) {

        UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, 0);
        [self.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

        return image;

    } else {

        return nil;
    }

}

@end
//
//  ViewController.m
//  ColorfulView
//
//  Created by YouXianMing on 15/7/10.
//  Copyright (c) 2015年 YouXianMing. All rights reserved.
//

#import "ViewController.h"
#import "UIView+ScreensShot.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor blackColor];

    UIView *cyanView         = [[UIView alloc] initWithFrame:CGRectMake(30, 30, 100, 100)];
    cyanView.backgroundColor = [UIColor cyanColor];
    cyanView.alpha           = 0.5f;
    [self.view addSubview:cyanView];

    UIImageView *imageView   = [[UIImageView alloc] initWithImage:[cyanView screenShot]];
    imageView.frame          = CGRectMake(80, 80, 100, 100);
    [self.view addSubview:imageView];
}

@end
时间: 2024-09-25 00:56:54

UIView的无损截图的相关文章

iOS 视图控制器转场详解(下)

推荐序 这是一篇长文,详细讲解了视图控制器转场的方方面面,配有详细的示意图和代码,为了使得文章在微信公众号中易于阅读,seedante 辛苦将大量长篇代码用截图的方式呈现,满满的诚意之作. 作者 seedante 是一个低调人士,只愿意透露他的 GitHub:https://github.com/seedante .感谢作者授权微信独家代理,本文的所有打赏归 seedante 所有. 插曲:UICollectionViewController 布局转场 前面一直没有提到这种转场方式,与三大主流转

MotionBlur

MotionBlur https://github.com/fastred/MotionBlur   MotionBlur allows you to add motion blur effect to your animations (currently only position's change). See the accompanying blog post to learn how it's implemented. MotionBlur允许你添加动态模糊特效(目前只支持位移变化).你

iOS开发之如何截图and如何合并多张图片等...

  1.UIView截图 -(UIImage*)captureView:(UIView *)theView{ CGRect rect = theView.frame; if ([theView isKindOfClass:[UIScrollView class]]) { rect.size = ((UIScrollView *)theView).contentSize; } UIGraphicsBeginImageContext(rect.size); CGContextRef context

详解iOS中UIView的layoutSubviews子视图布局方法使用_IOS

概念在UIView里面有一个方法layoutSubviews: 复制代码 代码如下: - (void)layoutSubviews;    // override point. called by layoutIfNeeded automatically. As of iOS 6.0, when constraints-based layout is used the base implementation applies the constraints-based layout, otherw

UIView使用UIMotionEffect效果

UIView使用UIMotionEffect效果   这个效果在模拟器上看不了,所以无法截图. UIView+MotionEffect.h  +  UIView+MotionEffect.m // // UIView+MotionEffect.h // // Copyright (c) 2014年 Nick Jensen. All rights reserved. // #import <UIKit/UIKit.h> @interface UIView (MotionEffect) @prop

IOS实现手动截图并保存_IOS

本文实例介绍了iOS手动剪裁图片并保存到相册的详细代码,分享给大家供大家参考,具体内容如下 一.实现效果1.操作步骤 绘制一个矩形框,弹出一个alertView,提示是否保存图片 点击"是",将图片保存到相册 在相册中查看保存的图片 2.效果图 二.实现思路1.在控制器的view上添加一个imageView,设置图片 2.在控制器的view上添加一个pan手势 3.跟踪pan手势,绘制一个矩形框(图片的剪切区域) 4.在pan手势结束时,通过alertView提示"是否将图片

[译] 如何在无损的情况下让图片变的更小

本文讲的是[译] 如何在无损的情况下让图片变的更小, 原文地址:Making Photos Smaller Without Quality Loss 原文作者:Stephen Arthur 译文出自:掘金翻译计划 译者:Xat_MassacrE 校对者:meifans,windmxf 如何在无损的情况下让图片变的更小 Yelp(美国最大点评网站)已经有超过 1 亿张用户上传的照片了,其中不但有晚餐.理发等活动的照片还有我们的新特性照片 -- #yelfies(一种在拍摄时,加上自拍头像的一种新的

ios-alpha=0或者隐藏起来的UIView占用CPU么

问题描述 alpha=0或者隐藏起来的UIView占用CPU么 如果一个视图已经隐藏了或者alpha=0状态,还消耗CPU么? 比如设置: [view setAlpha:0]; 然后: [view setFrame:newFrameRect]; 对性能有什么影响么? 解决方案 alpha为0的话会更加浪费CPU,因为绘图时CPU需要计算alpha下的图层的叠加效果,比一般的覆盖要更加耗费 资源 2.如果一个view的frame在window可显示范围之外,我想应该消耗CPU少些

实现UIView的无限旋转动画(非CALayer动画)

实现UIView的无限旋转动画(非CALayer动画) 效果: 素材: 源码: // // ViewController.m // Animation // // Created by YouXianMing on 15/2/5. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import "ViewController.h" @interface ViewController () @property (no