【发布时间】:2023-03-21 14:23:01
【问题描述】:
我正在尝试实现一个类似于对话框气泡的可拉伸图像,但是我没有做对,
使用以下代码:
UIImage *ballon = [[UIImage imageNamed:@"strech.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(12, 11, 12, 9)];
我得到以下结果:
这是我原来的leftBubble.png
我可能做错了什么?
【问题讨论】:
我正在尝试实现一个类似于对话框气泡的可拉伸图像,但是我没有做对,
使用以下代码:
UIImage *ballon = [[UIImage imageNamed:@"strech.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(12, 11, 12, 9)];
我得到以下结果:
这是我原来的leftBubble.png
我可能做错了什么?
【问题讨论】:
您不应该在整个图像上使用渐变。这就是线条的来源。图片的中心(被拉伸的部分必须是纯色,因为它会重复,不仅水平,而且垂直。
如果您只是水平拉伸图像,您的图像可能工作得很好。
试试我为你制作的这张图片,并使用一些不同的 capInsets:
UIImage *ballon = [[UIImage imageNamed:@"strech.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(12, 20, 22, 12)];
请注意,我所有的造型都发生在气泡的边缘,而中心是实心的。
编辑:
这是图片的较小版本。我做了一个更大的,这样你就可以看到我在做什么。
【讨论】:
我无法评论 jhilgert00 的回答,但我想补充一点:-[UIImage resizableImageWithCapInsets:]tiles 内部像素,而不是 拉伸,这就是为什么正如 jhilgert00 所说,渐变不起作用。
如果您使用的是 iOS 6.0 或更高版本,您可以使用-[UIImage resizableImageWithCapInsets:capInsets resizingMode:UIImageResizingModeStretch]
-(UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
[The]像素区域在每个方向没有被帽子覆盖,平铺, 从左到右和从上到下,调整图像大小。
和
-(UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode
如果您特别希望使用 UIImageResizingModeStretch 调整大小模式调整图像大小,则应仅调用此方法代替其对应方法。
【讨论】: