0

我正在尝试实现一个类似于对话框气泡的可拉伸图像但是我没有做对,

使用以下代码:

UIImage *ballon = [[UIImage imageNamed:@"strech.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(12, 11, 12, 9)];

我得到以下结果:

在此处输入图像描述 这是我原来的 leftBubble.png

在此处输入图像描述

我可能做错了什么?

4

2 回答 2

2

您不应该在整个图像上使用渐变。这就是线条的来源。图像的中心(被拉伸的部分必须是纯色,因为它不仅水平地重复,而且垂直地重复。

如果您只是水平拉伸图像,那么您的图像可能工作得很好。

试试我为你制作的这张图片,并使用一些不同的 capInsets:

在此处输入图像描述

UIImage *ballon = [[UIImage imageNamed:@"strech.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(12, 20, 22, 12)];

请注意,我所有的造型都发生在气泡的边缘,而中心是实心的。

编辑:

这是图像的较小版本。我做了一个更大的,这样你就可以看到我在做什么。

在此处输入图像描述

于 2013-01-12T00:20:52.260 回答
1

我无法评论 jhilgert00 的回答,但我想补充一点:-[UIImage resizableImageWithCapInsets:] 平铺内部像素,而不是拉伸,这就是渐变不起作用的原因,正如 jhilgert00 所说。

如果您使用的是 iOS 6.0 或更高版本,则可以使用-[UIImage resizableImageWithCapInsets:capInsets resizingMode:UIImageResizingModeStretch]

来自http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImage_Class/Reference/Reference.html

-(UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets

[每个方向上未被帽覆盖的]像素区域从左到右和从上到下平铺,以调整图像大小。

-(UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode

如果您特别希望使用 UIImageResizingModeStretch 调整大小模式调整图像大小,则应仅调用此方法代替其对应方法。

于 2013-01-12T01:02:16.267 回答