14

我需要在 Swift 3.0 中实现这个 Objective-C 代码(我使用的是 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()

4

2 回答 2

36

当我在 Xcode8 的 Swift 编辑器中编写这段代码时:

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?
于 2016-07-25T13:09:55.817 回答
1
var imageRef = self.image.cropping(to: cropRect)
于 2016-07-25T13:08:31.063 回答