Swift 把视图转化为UIImage

31 篇文章 5 订阅
7 篇文章 0 订阅

开发的时候我们会遇到截屏的功能,这里介绍一个简单的把UIView转化为UIImage的功能以此实现简单的截屏功能:
我们为UIIView做一个扩展:
Swift:

//将当前视图转为UIImage
    func asImage() -> UIImage {
        if #available(iOS 10.0, *) {
            let renderer = UIGraphicsImageRenderer(bounds: bounds)
            return renderer.image { rendererContext in
                layer.render(in: rendererContext.cgContext)
            }
        } else {
           guard bounds.size.height > 0 && bounds.size.width > 0 else {
            return nil
        	}
        	UIGraphicsBeginImageContextWithOptions(CGSize(width: bounds.width, height: bounds.height), false, 0)
        
       		 // 之前解决不了的模糊问题就是出在这个方法上
			//        layer.render(in: UIGraphicsGetCurrentContext()!)
        
    	    self.drawHierarchy(in: self.frame, afterScreenUpdates: true)  // 高清截图
       	    let image = UIGraphicsGetImageFromCurrentImageContext()
    	    UIGraphicsEndImageContext()
        
        return image
        
    }

OC:

- (UIImage*) imageWithUIView:(UIView*) view{
    // 创建一个bitmap的context  
    // 并把它设置成为当前正在使用的context  
   //  UIGraphicsBeginImageContext(view.bounds.size);   或
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(view.frame.size.width, view.frame.size.height),  NO,  0.0)
 CGContextRef currnetContext = UIGraphicsGetCurrentContext();
    [view.layer renderInContext:currnetContext];
    CGContextRestoreGState(context);
    // 从当前context中创建一个改变大小后的图片  
    UIImage* image = UIGraphicsGetImageFromCurrentImageContext();  
    // 使当前的context出堆栈  
    UIGraphicsEndImageContext();  
    return image;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值