2016-07-25 26 views
11

Ich brauche diesen Objective-C-Code in Swift implementieren 3.0 (Ich verwende Xcode 8 Beta 3):Swift 3.0: Wie wird CGImageCreateWithImageInRect() aufgerufen?

// 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]; 

ich nichts in der aktuellen Dokumentation für CGImageCreateWithImageInRect() finden.

Antwort

21

Wenn ich schreibe diesen Code in Xcode8 Swift Editor:

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

Swift hat mir ein Fehler wie folgt angezeigt:

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

Also änderte ich die Zeile:

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

Und die zweite Zeile Ihres Codes scheint di zu sein rekt umwandelbar Swift:

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

und die neuesten Dokumentationen CGImageCreateWithImageInRect,

CGImageCreateWithImageInRect

Durch Klicken auf den Link Swift, es zeigt:

func cropping(to rect: CGRect) -> CGImage? 
1
var imageRef = self.image.cropping(to: cropRect)