resizableImageWithCapInsets:resizingMode:UIImageResizingModeTile不起作用

时间:2013-03-06 14:54:57

标签: objective-c image-resizing

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

enter image description here

云端两侧的气泡不应该伸展,但是无论多长/短按钮都需要创建新气泡。例如,如果按钮需要是此图像大小的一半,则只显示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];

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:5)

您可能希望了解如何使用

创建tiled resizable image
- (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;

enter image description here

答案 1 :(得分:0)

拉伸在垂直方向上处理,然后在水平方向上处理(反之亦然)。所以提供top&考虑不应拉伸和垂直方向的垂直方向的底部偏移水平方向的右偏移。