您的位置:首页 > 移动开发 > IOS开发

iOS图片拉伸之神属性:resizableImageWithCapInsets

2017-06-26 18:15 465 查看
在仿写QQ会话窗口的时候,气泡的背景图片拉伸问题。并不是所有地方都可以拉伸的,所以定义了下面的工具类中的一个方法,专门拉伸图片。

UIImageResizingModeStrech:拉伸模式,通过拉伸UIEdgeInsets指定的矩形区域来填充图片
UIImageResizingModeTile:平铺模式,通过重复显示UIEdgeInsets指定的矩形区域来填充图片
+ (UIImage *)resizeWithImage:(UIImage *)image{
CGFloat top = image.size.height/2.0;
CGFloat left = image.size.width/2.0;
CGFloat bottom = image.size.height/2.0;
CGFloat right = image.size.width/2.0;
return [image resizableImageWithCapInsets:UIEdgeInsetsMake(top, left, bottom, right)resizingMode:UIImageResizingModeStretch];
}


显示样式:



P.S.

resizableImageWithCapInsets有四个值上下左右



上下左右的值定义了受保护区域,能被拉伸的地方是中间区域,一般我们都设成中心点为了安全。

详情调试实验请查看:

方法介绍和说明

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode
//该方法返回的是UIImage类型的对象,即返回经该方法拉伸后的图像
//传入的第一个参数capInsets是UIEdgeInsets类型的数据,即原始图像要被保护的区域
//这个参数是一个结构体,定义如下
//typedef struct { CGFloat top, left , bottom, right ; } UIEdgeInsets;
//该参数的意思是被保护的区域到原始图像外轮廓的上部,左部,底部,右部的直线距离,参考图2.1
//传入的第二个参数resizingMode是UIImageResizingMode类似的数据,即图像拉伸时选用的拉伸模式,
//这个参数是一个枚举类型,有以下两种方式
//UIImageResizingModeTile,     平铺
//UIImageResizingModeStretch,  拉伸


resizableImageWithCapInsets:方法的探析
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息