Определите, содержится ли прямоугольник обрезки полностью в повернутом UIView

Предпосылка: я создаю инструмент кадрирования, который обрабатывает произвольное вращение изображения двумя пальцами, а также произвольное кадрирование.

Иногда изображение оказывается повернутым таким образом, что вставляется пустое пространство, чтобы заполнить промежуток между повернутым изображением и прямоугольником кадрирования (см. Примеры ниже).

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

С помощьюэтот ответЯ реализовал возможность проверять, пересекается ли повернутый UIImageView с CGRect обрезки, но, к сожалению, это не говорит мне, является ли прямоугольник кадрированияполностью содержится в повернутом изображении. Надеетесь, что я смогу внести несколько простых изменений в этот ответ?

Наглядный пример ОК:

и не хорошо, то, что мне нужно обнаружить и иметь дело с:

Обновить: не работает метод

- (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;
}

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

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