Swift 3.0: Как вызвать CGImageCreateWithImageInRect()?

Мне нужно реализовать этот код Objective-C в Swift 3.0 (я использую Xcode 8 Beta 3):

// Note: this code comes from an Obj-C category on UIImage
CGImageRef imageRef = CGImageCreateWithImageInRect(self.CGImage, cropRect);
UIImage *image = [UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation];

Я не могу найти что-либо в последней документации для CGImageCreateWithImageInRect().

Ответ 1

Когда я пишу этот код в редакторе Swift Xcode8:

let imageRef = CGImageCreateWithImageInRect(self.CGImage!, cropRect)

Свифт показал мне ошибку как:

error: 'CGImageCreateWithImageInRect' has been replaced by instance method 'CGImage.cropping(to:)'

Итак, я изменил строку на:

let imageRef = self.cgImage!.cropping(to: cropRect)

И вторая строка вашего кода, по-видимому, напрямую конвертируется в Swift:

let image = UIImage(cgImage: imageRef!, scale: self.scale, orientation: self.imageOrientation)

И последние документы CGImageCreateWithImageInRect,

CGImageCreateWithImageInRect

Нажав на ссылку Swift, он показывает:

func cropping(to rect: CGRect) -> CGImage?

Ответ 2

var imageRef = self.image.cropping(to: cropRect)