¿Cómo recortar un UIImageView a un nuevo UIImage en modo "ajuste de aspecto"?

Me gustaría crear un nuevo UIImage recortando la imagen dentro de un UIImageView. Por ejemplo, en la foto de arriba, quiero un nuevo UIImage del área delineada en verde. Encontré el código para hacer esto, normalmente se parece a esto (como una categoría de UIImage):

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

Tiene mucho sentido. SIN EMBARGO, mi UIImageView está en el modo de ajuste de aspecto de contentMode. Parece que eso complica los cálculos de CGRect para CGImageCreateWithImageInRect y no he podido encontrar la solución correcta.

¿Me imagino que debo aplicar las mismas transformaciones al rectángulo verde que se hicieron en la imagen?

TAMBIÉN: encontré esta otra pregunta aquí (Cómo saber el tamaño de la imagen después de aplicar el ajuste de aspecto para la imagen en un UIImageView), que parece mostrar una forma de fuerza bruta de obtener el tamaño, pero todavía no estoy seguro de cómo eso se ajusta a una situación de cultivo.

¿Algunas ideas?

EDITAR: En mi caso, literalmente tengo un cuadrado como se muestra arriba dibujado en una vista superpuesta sobre UIImageView. Entonces, cuando me doy cuenta de que estoy recortando el UIImage (dentro de UIImageView), necesito cambiar el CGRect verde de tal manera que "coincida" con la transformación realizada cuando se aplica "ajuste de aspecto". Por ejemplo, si dejo mi UIImageView en el modo 'arriba a la izquierda', entonces todo funciona bien, porque hay una asignación 1: 1 entre el UIImage subyacente y el UIImageView. El problema en el modo 'arriba a la izquierda' es que la imagen completa no siempre se muestra, porque podría ser más grande que mi UIImageView.

Respuestas a la pregunta(4)

Su respuesta a la pregunta