3

UIImage 的resizableImageWithCapInsets方法对于带有圆角的标准矩形按钮来说非常好,但我正在尝试创建一个看起来像云的按钮,边缘不均匀。我无法完全理解绘制或创建它的最佳方式,或者当我将它放入我的应用程序时如何拉伸它。我在谈论这样的事情:

在此处输入图像描述

云两侧的气泡不应拉伸,但无论按钮需要长/短,都会创建新气泡。例如,如果按钮需要是此图像的一半大小,则只会显示 2 个气泡,但如果需要更高,则可能超过此处的 5 个,它会根据需要添加和删除它们. 我会设置最小尺寸,以便至少有一个气泡始终存在,如果它太小,可以防止出现问题。如果需要,气泡本身可以平铺。

从软件开发或图形设计的角度来看,有人对我如何实现这种效果有任何建议吗?

编辑:

我试图用下面的图片和下面的代码来做到这一点,它给出的结果就像这里的图片一样。图像的大小甚至都不合适,更不用说平铺了。我已经验证了图像的框架也比这里显示的要大。这里真的很困惑!

cappedCloud = [[UIImage imageNamed: @"cloud.png"] resizableImageWithCapInsets: UIEdgeInsetsMake(9, 9, 9, 9) resizingMode: UIImageResizingModeTile];

[[cell.cloudButton imageView] setContentMode: UIViewContentModeScaleToFill];
[cell.cloudButton setImage: cappedCloud forState: UIControlStateNormal];
[cell.cloudButton setAlpha: 0.85f];

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

5

您可能想研究如何使用创建平铺可调整大小的图像

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

使用稍微修改过的代码版本,我能够将图像平铺在按钮上,尽管它平铺得不是很好:

UIImage* cappedCloud = [[UIImage imageNamed: @"cloud.png"] resizableImageWithCapInsets: UIEdgeInsetsMake(9, 9, 9, 9) resizingMode: UIImageResizingModeTile];

[cloudButton setBackgroundImage:cappedCloud forState:UIControlStateNormal];
[cloudButton setAlpha: 0.85f];

cloudImage.image = cappedCloud;

在此处输入图像描述

于 2013-03-06T14:58:40.147 回答
0

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

于 2013-11-12T10:12:23.943 回答