我试着截取屏幕截图并从截图中截取一部分。
截图部分工作得很好,但我不能让裁剪部分工作。

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?

最佳答案

UIImage在大多数情况下包含可以直接访问的CGImage
在您的情况下,image是使用可选链接设置的,并且是UIImage?类型,因此您需要:
UIImage?.CGImage
访问CGImage

关于swift - 快速裁剪屏幕截图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27967864/

10-14 06:25