6

我想拉伸尺寸为 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 个箭头!谁能告诉我为什么以及如何正确使用它?谢谢

4

3 回答 3

13

您的问题在于您传递给UIEdgeInsetsMake. 值是上、左、下、右。由于左上角的箭头,您需要确保您的左值足够大,以便从图像的左边缘到箭头的右侧。

鉴于您发布的图片,您需要类似以下内容:

 UIEdgeInsetsMake(12, 32, 4, 4)

顺便说一句 - 图像应该只有左 + 右 + 1 像素宽和上 + 下 + 1 像素高。所以你的图像不需要像它一样大。

于 2013-09-04T05:00:51.463 回答
0

拉伸先在垂直方向进行,然后在水平方向进行(反之亦然)。因此,考虑不应该拉伸的垂直方向和水平方向的左右偏移,提供顶部和底部偏移。

于 2013-11-12T10:17:36.820 回答
-2

使用这个函数,你可以改变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;
}

希望这会帮助你。

于 2013-09-04T04:49:10.287 回答