Wie erfasse ich eine gezoomte UIImageView in einer Scrollview zum Zuschneiden?

Problem: Das Beschneiden mit herausgezoomtem Bild ist in Ordnung. Das Beschneiden mit dem gezoomten Bild zeigt das Bild über dem, was sein sollte. Der yOffset, den ich dort habe, ist, weil das gewünschte Zuschneidequadrat unterhalb der Scrollansicht beginnt.

Code:

CGRect rect;
float yOffset = 84;
rect.origin.x = floorf([scrollView contentOffset].x * zoomScale);
rect.origin.y = floorf(([scrollView contentOffset].y + yOffset) * zoomScale);
rect.size.width = floorf([scrollView bounds].size.width * zoomScale);
rect.size.height = floorf((320 * zoomScale));

if (rect.size.width > 320) {
    rect.size.width = 320;
}

if (rect.size.height > 320) {
    rect.size.height = 320;
}

CGImageRef cr = CGImageCreateWithImageInRect([[imageView image] CGImage], rect);

UIImage *img = imageView.image; //[UIImage imageWithCGImage:cr];

UIGraphicsBeginImageContext(rect.size);

// translated rectangle for drawing sub image
CGRect drawRect = CGRectMake(-rect.origin.x, -rect.origin.y, 320.0f, 320.0f);
NSLog(@"drawRect: %@", NSStringFromCGRect(drawRect));
NSLog(@"rect: %@", NSStringFromCGRect(rect));

// draw image
[img drawInRect:drawRect];

// grab image
UIImage *cropped = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

CGImageRelease(cr);

[self.delegate imageCropper:self didFinishCroppingWithImage:cropped];

Was mache ich, wenn das Bild beim Zoomen die falsche Höhe annimmt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage