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, );
[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(, , , )];
cyanView.backgroundColor = [UIColor cyanColor];
cyanView.alpha = 0.5f;
[self.view addSubview:cyanView]; UIImageView *imageView = [[UIImageView alloc] initWithImage:[cyanView screenShot]];
imageView.frame = CGRectMake(, , , );
[self.view addSubview:imageView];
} @end

UIView的无损截图的更多相关文章

  1. Swift - UIView的无损截图

    Swift - UIView的无损截图 效果 源码 // // UIView+ScreensShot.swift // Swift-Animations // // Created by YouXia ...

  2. 【iOS】控件截图、MP4格式视频流和m3u8格式视频流截取某一帧功能的实现

    最近开发遇到一个点击按钮实现直播视频流截屏的功能,去网上查了一下资料,总结了一下iOS中截屏相关的知识,然后自己做了个demo. demo主要实现了3种截屏方法,分别对应三种不同的应用场景. 1.im ...

  3. [翻译] MotionBlur

    MotionBlur https://github.com/fastred/MotionBlur MotionBlur allows you to add motion blur effect to ...

  4. iOS 关于监听手机截图,UIView生成UIImage, UIImage裁剪与压缩的总结

    一.  关于监听手机截图 1. 背景: 发现商品的售价页总是被人转发截图,为了方便用户添加截图分享的小功能 首先要注册用户截屏操作的通知 - (void)viewDidLoad { [super vi ...

  5. UIScrollView,UIView转换UIImage代码(整个view截图, 不只是可视区域)

    -(UIImage*)captureView:(UIView *)theView{     CGRect rect = theView.frame;     if ([theView isKindOf ...

  6. iOS UIView 动画浅谈

    UIView 等会效果简单实现,哪一个登录页面的demo来举例子吧. + (void)animateWithDuration:(NSTimeInterval)duration animations:( ...

  7. 【Android测试】Android截图的深水区

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/6113059.html 需求 这两天遇到这样一个事情,因为某 ...

  8. Quartz2D之生成圆形头像、打水印、截图三种方法的封装

    我给UIImage类添加了一个类目,用于封装三个方法,每个方法都没有难度,做这个主要为了练习一下封装: 首先在类目.h文件中声明三个方法:以及创建了一个枚举.用于水印方法中设定水印位置:方法说明和参数 ...

  9. IOS UIView 04- 自定义控件

    注:本人是翻译过来,并且加上本人的一点见解. 前言 本文将讨论一些自定义视图.控件的诀窍和技巧.我们先概述一下 UIKit 向我们提供的控件,并介绍一些渲染技巧.随后我们会深入到视图和其所有者之间的通 ...

随机推荐

  1. springboot-26-springboot 集成rabbitmq

    rabbitmq是基于AMQP规范的一个消息代理, 它可以兼容jms, 支持其他语言, 并且可以跨平台 1, 安装 1) 普通安装 度娘: 2) docker 安装 sudo docker run - ...

  2. docker 创建基础镜像

    docker 安装卸妆官方说明:  https://docs.docker.com/install/linux/docker-ee/centos/#os-requirements 本系列基于cento ...

  3. for循环的3个参数

    1.最常用的方法是用来遍历集合 /** **第一个参数:表示循环的初始值,或初始条件,这里是i=0; **第二个参数:是循环的条件,这里是当i小于list的长度时; **第三个参数:每次循环要改变的操 ...

  4. T-SQL 片段收藏

    存储过程 CREATE PROCEDURE spInsertOrUpdateProduct --有则更新,否则插入 ) , ) , @StdCost MONEY AS IF EXISTS ( SELE ...

  5. Idea 2017.3以后版本的破解(亲测有效)转

    转自:http://www.mamicode.com/info-detail-2147137.html 自从升级到idea2017.3之后,之前的license server破解方法貌似已失效.于是找 ...

  6. hadoop学习笔记(十一):MapReduce数据类型

    一.序列化 1 hadoop自定义了数据类型,在hadoop中,所有的key/value类型必须实现Writable接口.有两个方法,一个是write,一个是readFileds.分别用于读(反序列化 ...

  7. s11d27 算法

    s11d27 算法 一.理论 1.1 时间复杂度和空间复杂度的理论: 1)空间复杂度: 是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了, 简单说就是递归集算时通常是反 ...

  8. dev的控件放在没有runat="server"的标签中,回调出现的问题

    dev的控件放在没有runat="server"的标签中,第一次回调是会刷新页面, 有runat="server"时不会刷新页面

  9. SqlServer知识点

    在公司天天写Sql写,存储过程,但是公司工具模板把创建的语句都写好了,只负责写里面的逻辑,久而久之,创建语句都不会写了.还有一些知识点都很模糊,平常使用的时候都不清楚,稀里糊涂的就在用.在这里整理一下 ...

  10. 【原】通过Spring-Session实现不同系统之间的单点登录

    单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.目前市面上有很 ...