Für die neue Version meiner Wiesn App benötigte ich die Möglichkeit Bilder zu beschneiden.
Mit der nachfolgenden UIImage Category lässt sich dies einfach realisieren, indem der Funktion ein CGRect übergeben wird, das dem neuen Bildausschnitt entspricht.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
@implementation UIImage (Crop)

- (UIImage *)crop:(CGRect)rect {
    if (self.scale > 1.0f) {
        rect = CGRectMake(rect.origin.x * self.scale,
                          rect.origin.y * self.scale,
                          rect.size.width * self.scale,
                          rect.size.height * self.scale);
    }

    CGImageRef imageRef = CGImageCreateWithImageInRect(self.CGImage, rect);
    UIImage *result = [UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation];
    CGImageRelease(imageRef);
    return result;
}

@end