- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight;现在又总结了2个方法。现在介绍另外2种方法。
在iOS 5.0中,UIImage又有一个新方法可以处理图片的拉伸问题,如下 :
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsetsNS_AVAILABLE_IOS(5_0);// create a resizable version of this image. the interior is tiled when drawn.
这个方法只接收一个UIEdgeInsets类型的参数,可以通过设置UIEdgeInsets的left、right、top、bottom来分别指定左端盖宽度、右端盖宽度、顶端盖高度、底端盖高度。按照逆时针方向记忆。
在iOS6.0中,UIImage又提供了一个方法处理图片拉伸,如下 :
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingModeNS_AVAILABLE_IOS(6_0);// the interior is resized according to the resizingMode
对比iOS5.0中的方法,只多了一个UIImageResizingMode参数,用来指定拉伸的模式:
- UIImageResizingModeStretch:拉伸模式,通过拉伸UIEdgeInsets指定的矩形区域来填充图片
- UIImageResizingModeTile:平铺模式,通过重复显示UIEdgeInsets指定的矩形区域来填充图片
UIImageView *m_imageView = [[UIImageViewalloc]initWithFrame:CGRectMake(0,0, 240,110)];
//[m_imageView setImage:[[UIImage imageNamed:@"2.png"] stretchableImageWithLeftCapWidth:40 topCapHeight:10]];
[m_imageView setImage:[[UIImageimageNamed:@"1.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(30,30, 30,30)]];
[m_imageView setImage:[[UIImageimageNamed:@"1.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(30,30, 30,30) resizingMode:UIImageResizingModeStretch]];
[self.view addSubview:m_imageView];
[m_imageView release];
如果想要兼容5.0之前的设备就要使用第一种方法。后面两种方法适用区域拉伸。