Когато се опитам да изрежа долната част на изображение, резултатът се увеличава от горния ляв ъгъл. Без изрязване изображението се вижда добре. Наистина не виждам какво правя погрешно тук с функцията за изрязване. Защо това не връща пълното изображение с изрязването? Вижте кода и резултатите по-долу:
- (UIImage *)croppedImageFromScreenShot
{
// Prepare view for screen capture
// Screen Capture
CGRect fullScreenRect = self.view.bounds;
UIGraphicsBeginImageContextWithOptions(fullScreenRect.size, NO, [UIScreen mainScreen].scale);
[self.view drawViewHierarchyInRect:fullScreenRect afterScreenUpdates:YES];
UIImage *screenShotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// Crop Image
CGFloat cropDistance = 20.0;
CGSize imageSize = screenShotImage.size;
CGRect imageRect = CGRectMake(0.0, 0.0, imageSize.width, imageSize.height);
CGRect cropRect = CGRectInset(imageRect, 0.0, cropDistance);
CGImageRef imageRef = CGImageCreateWithImageInRect([screenShotImage CGImage], cropRect);
UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
// Restore view after screen capture
return croppedImage;
}
Изрязването върви добре, но изображението е увеличено и по-малко:
Без изрязване размерът е добре от кода по-долу:
- (UIImage *)croppedImageFromScreenShot
{
// Prepare view for screen capture
// Screen Capture
CGRect fullScreenRect = self.view.bounds;
UIGraphicsBeginImageContextWithOptions(fullScreenRect.size, NO, [UIScreen mainScreen].scale);
[self.view drawViewHierarchyInRect:fullScreenRect afterScreenUpdates:YES];
UIImage *screenShotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return screenShotImage;
}
Връща се към оригиналното изображение, както би трябвало да прави и с функцията за изрязване: