如何使用

我想拉伸尺寸为170×50的图像,并在尺寸为240×140的图像视图中显示。 原始图像看起来像:

在这里输入图像说明

我想保持四个angular落,只有拉伸中心部分。 我使用下面的代码:

UIImage *originalImg = [UIImage imageNamed:@"ImageNamed"]; UIImage *resizeImg = [originalImg resizableImageWithCapInsets:UIEdgeInsetsMake(20 ,10, 10, 10)]; self.originalImgV.image = originalImg; self.resizedImgV.image = resizeImg; 

originalImgV和resizedImgV都设置为“纵横填充”。 我在模拟器上运行它,结果是:

在这里输入图像说明

我无法理解的是:resizedImgV有2个箭头! 任何人都可以告诉我为什么,如何正确使用它? 谢谢

你的问题是你传递给UIEdgeInsetsMake的值。 值是顶部,左侧,底部,右侧。 由于左上angular的箭头,您需要确保您的左侧值足够大,可以从图像的左侧边缘到箭头的右侧。

鉴于你张贴的图像,你想要的东西,如:

  UIEdgeInsetsMake(12, 32, 4, 4) 

顺便说一句 – 图像应该只剩下+右+ 1像素宽,顶+底+ 1像素高。 所以你的形象不需要像现在这样大。

使用此function,您可以使用此function更改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; } 

希望这会帮助你。

拉伸在垂直方向上进行,然后在水平方向上进行(反之亦然)。 因此,考虑垂直方向不应该拉伸的左上和右下偏移以及水平方向的左右偏移。