zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    IDEA中Maven依赖下载失败解决方案
    Java 泛型 泛型的约束与局限性
    年轻就该多尝试,教你20小时Get一项新技能
    Java入门
    2020全球C++及系统软件技术大会成功落下帷幕
    hashMap底层源码浅析
    hashMap底层源码浅析
    RabbitMQ (二) 简单队列
    RabbitMQ (一) 简介和基本概念
    Linux 关闭/开启密码登录(仅证书登录)
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4655835.html
Copyright © 2011-2022 走看看