一、iOS 5.0
在iOS 5.0中,UIImage又有一个新方法可以处理图片的拉伸问题
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
这个方法只接收一个UIEdgeInsets类型的参数,可以通过设置UIEdgeInsets的left、right、top、bottom来分别指定左端盖宽度、右端盖宽度、顶端盖高度、底端盖高度
1 CGFloat top = 25; // 顶端盖高度 2 CGFloat bottom = 25 ; // 底端盖高度 3 CGFloat left = 10; // 左端盖宽度 4 CGFloat right = 10; // 右端盖宽度 5 UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right); 6 // 伸缩后重新赋值 7 image = [image resizableImageWithCapInsets:insets];
运行效果:
二、iOS 6.0
在iOS6.0中,UIImage又提供了一个方法处理图片拉伸
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode
对比iOS5.0中的方法,只多了一个UIImageResizingMode参数,用来指定拉伸的模式:
- UIImageResizingModeStretch:拉伸模式,通过拉伸UIEdgeInsets指定的矩形区域来填充图片
- UIImageResizingModeTile:平铺模式,通过重复显示UIEdgeInsets指定的矩形区域来填充图片
1 CGFloat top = 25; // 顶端盖高度 2 CGFloat bottom = 25 ; // 底端盖高度 3 CGFloat left = 10; // 左端盖宽度 4 CGFloat right = 10; // 右端盖宽度 5 UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right); 6 // 指定为拉伸模式,伸缩后重新赋值 7 image = [image resizableImageWithCapInsets:insets resizingMode:UIImageResizingModeStretch];
运行效果: