2

我试图制作一个可调整大小的图像,但无法弄清楚这一点。当我使用

UIImage *bgImage = [[UIImage imageNamed:@"logout-bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(50, 50, 50, 50)];
[bgImage drawInRect:boxRect];

它给出以下输出
在此处输入图像描述

而不是调整大小它会破坏图像。

但如果我使用

UIImage *bgImage = [[UIImage imageNamed:@"logout-bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(50, 50, 50, 50)];
CGContextDrawImage(context, boxRect, bgImage.CGImage);

它现在提供以下输出
在此处输入图像描述
,而不是调整其拉伸图像的大小。

我已经通过互联网搜索但无法解决我的问题。谁能帮我。请注意我不想在任何子视图中添加这个。

我的原始图像是(它具有透明度,为什么它从中间看起来是灰色的)
在此处输入图像描述

4

1 回答 1

0

那么问题就在插图上。您的原始图像是100x100 像素,并且您将插图设置为四个边缘(顶部、左侧、底部、右侧)中的任何一个的50 像素。这意味着您的图像现在是这样切片的:

在此处输入图像描述

你注意到有什么问题吗?没有什么可重复的!

因此,如果我们渲染图像,我们会得到:

在此处输入图像描述

现在我们真正想要的是制作插图,以便我们保持圆角并重复其他所有内容。像这样的东西(这是20px插图):

在此处输入图像描述

这当然在渲染时给了我们想要的结果:)

在此处输入图像描述

所以唯一需要改变的是:

UIImage *bgImage = [[UIImage imageNamed:@"logout-bg"]
    resizableImageWithCapInsets:UIEdgeInsetsMake(20, 20, 20, 20)];
于 2013-06-14T08:34:20.123 回答