Я хотел бы создать новый 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), который, кажется, показывает способ грубой силы для получения размера, но Я до сих пор не уверен, как это вписывается в ситуацию обрезки.
Есть идеи?
РЕДАКТИРОВАТЬ: В моем случае у меня буквально есть квадрат, как показано выше, нарисованный в виде наложения поверх UIImageView. Поэтому, хотя я понимаю, что обрезаю UIImage (внутри UIImageView), мне нужно каким-то образом изменить зеленый CGRect, чтобы он «соответствовал» преобразованию, выполненному при применении «соответствия пропорций». Например, если я оставлю свой UIImageView в режиме «верхний левый», все будет работать нормально, потому что между базовым UIImage и UIImageView существует сопоставление 1:1. Проблема в режиме «вверху слева» заключается в том, что изображение не всегда отображается целиком, потому что оно может быть больше, чем мой UIImageView.