Когда я пытаюсь обрезать нижнюю часть изображения, результат увеличивается слева вверху. Без кропа изображение показывает нормально. Я действительно не понимаю, что я делаю не так с функцией кадрирования. Почему это не возвращает полное изображение с кадрированием? См. код и результаты ниже:
- (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;
}
Возвращает к исходному изображению, как это и должно делать с обрезанной функцией: