Как обрезать UIImageView для нового UIImage в режиме «подгонка аспекта»?
Я хотел бы создать новый 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.