Как обрезать UIImageView для нового UIImage в режиме «подгонка аспекта»?

enter image description here

Я хотел бы создать новый UIImage, обрезая изображение внутри UIImageView. Например, на картинке выше я хочу новый UIImage области, обведенной зеленым. Я нашел код для этого, обычно он выглядит примерно так (как категория UIImage):

- (UIImage *)croppedImage:(CGRect)bounds {
    CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], bounds);
    UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    return croppedImage;
}

Имеет смысл. ОДНАКО, мой UIImageView находится в contentMode «подходящий аспект». Похоже, это усложняет вычисления CGRect для CGImageCreateWithImageInRect, и я не смог найти правильное решение.

Я полагаю, мне нужно применить те же преобразования к зеленому прямоугольнику, как и к изображению?

ТАКЖЕ: я нашел этот другой вопрос здесь (Как узнать размер изображения после применения подгонки изображения в UIImageView), который, кажется, показывает грубый способ получения размера, но я все еще не уверен, как это вписывается в ситуацию обрезки.

Есть идеи?

EDITВ моем случае у меня буквально есть квадрат, как показано выше, нарисованный в режиме наложения поверх UIImageView. Поэтому, хотя я понимаю, что обрезаю UIImage (внутри UIImageView), мне нужно каким-то образом изменить зеленый CGRect таким образом, чтобы он «соответствовал». преобразование, выполненное, когда «аспект подходит» применены. Например, если я оставлю свой UIImageView в «верхнем левом углу»; режим, то все работает нормально, потому что между базовым UIImage и UIImageView есть отображение 1: 1. Проблема в «верхнем левом углу»; Режим состоит в том, что все изображение не всегда отображается, потому что оно может быть больше, чем мой UIImageView.

Ответы на вопрос(4)

Ваш ответ на вопрос