Determine si el rect de cultivo está completamente contenido dentro de UIView girado

Premisa: Estoy creando una herramienta de recorte que maneja la rotación arbitraria de una imagen con dos dedos, así como el recorte arbitrario.

A veces, la imagen termina rotada de manera que se inserta un espacio vacío para llenar un espacio entre la imagen rotada y el recorte recto (ver los ejemplos a continuación).

Necesito asegurarme de que la vista de la imagen, cuando se gira, se ajuste por completo al rectángulo de recorte. Si no es así, entonces necesito volver a transformar la imagen (hacer zoom) para que se ajuste a los límites de recorte.

Utilizandoesta respuesta, Implementé la capacidad de verificar si un UIImageView girado se cruza con el CGRect de recorte, pero desafortunadamente eso no me dice si el recorte correcto esenteramente contenido en la vista de imagen girada. ¿Esperando poder hacer algunas modificaciones fáciles a esta respuesta?

Un ejemplo visual de OK:

y no está bien, eso que necesito detectar y tratar:

Actualizar: método no funciona

- (BOOL)rotatedView:(UIView*)rotatedView containsViewCompletely:(UIView*)containedView {

    CGRect rotatedBounds = rotatedView.bounds;
    CGPoint polyContainedView[4];

    polyContainedView[0] = [containedView convertPoint:rotatedBounds.origin toView:rotatedView];
    polyContainedView[1] = [containedView convertPoint:CGPointMake(rotatedBounds.origin.x + rotatedBounds.size.width, rotatedBounds.origin.y) toView:rotatedView];
    polyContainedView[2] = [containedView convertPoint:CGPointMake(rotatedBounds.origin.x + rotatedBounds.size.width, rotatedBounds.origin.y + rotatedBounds.size.height) toView:rotatedView];
    polyContainedView[3] = [containedView convertPoint:CGPointMake(rotatedBounds.origin.x, rotatedBounds.origin.y + rotatedBounds.size.height) toView:rotatedView];

    if (CGRectContainsPoint(rotatedView.bounds, polyContainedView[0]) &&
        CGRectContainsPoint(rotatedView.bounds, polyContainedView[1]) &&
        CGRectContainsPoint(rotatedView.bounds, polyContainedView[2]) &&
        CGRectContainsPoint(rotatedView.bounds, polyContainedView[3]))
        return YES;
    else
        return NO;
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta