UIImageView的resizableImage

时间:2013-03-22 07:53:20

标签: ios ios5

我正在为IOS 5.0工作,作为minTarget

我有一个UIImageView,我想为其分配一个可调整大小的图像,这样图像就不会从角落伸展。

我尝试将UIImageView的内容模式设置为UIViewContentModeScaleToFill。但图像显示为平铺。

这是代码

UIImage *bgImage = [[UIImage imageNamed:@"ImgViewBg"] resizableImageWithCapInsets:UIEdgeInsetsMake(2, 2, 2, 2)];

imgView.contentMode = UIViewContentModeScaleToFill;
imgView.image = bgImage;

我正在寻找与android中的9patch图像相同的效果

这是我正在尝试的图像 ImgViewBg

我刚才再看一下resizeableImageWithCapInsets的文档。它说它把没有盖帽的区域拼凑起来。我认为导致平铺图案的原因。是否有任何解决方法,以便我可以有9Patch样式图像??

修改

根据Apple Docs的说法 以下是IOS 5.0以下我的工作     [[UIImage imageNamed:@“textViewBg”] stretchableImageWithLeftCapWidth:6 topCapHeight:6]; (如Dipen Panchasara所述)

IOS6.0及更高版本后续工作为我的要求 - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode

IOS 5.0及更高版本(我需要)
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
上面的函数在我的情况下不起作用,因为它将图像平铺在帽子下面。

所以对于IOS 5.0到IOS 6.0,我找不到任何能解决我要求的东西。

现在我转向使用Dipen Panchasara解决方案,我希望它保持稳定

2 个答案:

答案 0 :(得分:1)

// Use following code to make stretchableBackground
UIImage *bgImage = [[UIImage imageNamed:@"ImgViewBg"] stretchableImageWithLeftCapWidth:13 topCapHeight:13];
[imgView setImage:bgImage];

答案 1 :(得分:0)

ScaleToFill将拉伸图像以填充整个图像视图。如果您不想拉伸图像并保持其纵横比,请使用UIViewContentModeScaleAspectFit或UIViewContentModeScaleAspectFill。

您可以找到有关这些常量的更多信息here