ios拓展13-Swift截屏方法以及区别

截屏在开发中,偶尔会用到, 这里给大家介绍一下Swift 两个方法以及区别, OC的话,如果有需要,可以自己改写

方法实现
static func getScreenShot() -> UIImage{
        let windown = UIApplication.sharedApplication().keyWindow
        
        // 01 开启图片上下文
        UIGraphicsBeginImageContextWithOptions((windown?.bounds.size)!, true, UIScreen.mainScreen().scale)

     =================**方法一**==================
//        let context = UIGraphicsGetCurrentContext()// 02 获取图片上下文 
//        windown?.layer.renderInContext(context!)// 03 将 layer 渲染到图片上下文中
           ===============**方法一**====================

     ===============**方法二**====================
        windown?.drawViewHierarchyInRect((windown?.bounds)!, afterScreenUpdates: false)
//afterScreenUpdates如果是true, 则是addSubview之后,  如果是false,则是addSubview之前
//自iOS7开始,UIView类提供了一个方法-drawViewHierarchyInRect:afterScreenUpdates:
      ===============**方法二**====================      

        // 获取图片
        let img = UIGraphicsGetImageFromCurrentImageContext()
        
        // 关闭图片上下文
        UIGraphicsEndImageContext()
        
//  将图片存储到本地
        UIImagePNGRepresentation(img)?.writeToFile("/Users/a/Desktop/w.png", atomically: true)
        
        return img
        
    }
具体区别如下,如果点击按钮执行如下代码
            let view = YYComposeView()
            view.backgroundColor = UIColor.redColor()
            
            self?.view.addSubview(view)

            UIImage.getScreenShot()

//如果是方法1,那么会截取  addSubview 之后的屏幕.    
//如果是方法2, 截取的是  主要看 afterScreenUpdates

你可能感兴趣的:(ios拓展13-Swift截屏方法以及区别)