在swift中剪切屏幕截图

时间:2015-01-15 16:12:32

标签: swift uiimage screenshot cgimage

我正在尝试截取屏幕截图并从截图中裁剪掉一部分。 截图部分工作正常,但我无法使裁剪部分正常工作。

var image = self.view?.pb_takeSnapshot()

let croprect = CGRectMake(view.bounds.width/2, view.bounds.height/3.8, 
               view.bounds.width/2,    view.bounds.height/3.5)

    var imageRef = CGImageCreateWithImageInRect(CGImage(image), croprect) //Error: CGImage cannot be constructed because it has no accessible initializers
    var croppedImage = UIImage(CGImage: imageRef)

获取屏幕截图的功能:

func pb_takeSnapshot() -> UIImage {
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, UIScreen.mainScreen().scale);

    self.drawViewHierarchyInRect(self.bounds, afterScreenUpdates: true)

    // old style: self.layer.renderInContext(UIGraphicsGetCurrentContext())

    let image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

我的问题:有没有办法在不使用CGImage的情况下执行此操作,还是有一种简单的方法将UIImage转换为CGImage?

1 个答案:

答案 0 :(得分:1)

在大多数情况下,

UIImage包含您可以直接访问的CGImage

在您的情况下image使用可选链接进行设置,类型为UIImage?,因此您需要:

UIImage?.CGImage

访问CGImage