как использовать [UIImage resizableImageWithCapInsets:]
Я хотел бы растянуть изображение размером 170x50 и показать его в виде изображения размером 240x140. Исходное изображение выглядит так:
Я хочу сохранить четыре угла и растянуть только центральную часть. Я использую следующий код:
UIImage *originalImg = [UIImage imageNamed:@"ImageNamed"];
UIImage *resizeImg = [originalImg resizableImageWithCapInsets:UIEdgeInsetsMake(20 ,10, 10, 10)];
self.originalImgV.image = originalImg;
self.resizedImgV.image = resizeImg;
как originalImgV, так и resizedImgV имеют значение "aspect fill". Я запускаю его на симуляторе, и результат :
чего я не могу понять: resizedImgV имеет 2 стрелы! Может ли кто-нибудь сказать мне, почему и как я могу использовать его правильно? Спасибо
3 ответов
ваша проблема заключается в значениях, которые вы передаете UIEdgeInsetsMake
. Значения: верхний, левый, нижний, правый. Из-за стрелки в левом верхнем углу вам нужно убедиться, что ваше левое значение достаточно большое, чтобы перейти от левого края изображения к правой части стрелки.
учитывая изображение, которое вы опубликовали, вы хотите что-то вроде:
UIEdgeInsetsMake(12, 32, 4, 4)
BTW-изображение должно быть только слева + справа + 1 пикселей в ширину и сверху + снизу + 1 пикселей в высоту. Так что ваш образ не должен быть почти таким же большой, как это.
растяжка обрабатывается в вертикальном направлении, а затем в горизонтальном направлении (или наоборот). Так обеспечьте верхние & нижние смещения рассматривая вертикальное направление которое не должно протянуть и левые & правые смещения для горизонтального направления.
использовать эту функцию, вы можете изменить размер UIImage
С помощью этой функции.
+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
надеюсь, это поможет вам.