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

OC_图片拉伸的几种方式(拉伸、切片)

2016-07-22 08:59 597 查看


OC_图片拉伸的几种方式(拉伸、切片)


拉伸前:(假如给一个button设置一个背景图片)

[self.myButton setBackgroundImage:[UIImage imageNamed:@"004"] forState:UIControlStateNormal];


效果如下:(四周很模糊,明显给用户很渣渣的感觉)



拉伸前效果


第一种:代码拉伸,封装到了一个分类里,直接调用即可:

封装的分类方法:
/**
*  返回一张可以随意拉伸不变形的图片
*  @param name 图片名字
*/
+(UIImage *)stretchableImageWithImgae:(NSString *)name{

UIImage *normal = [UIImage imageNamed:name];
CGFloat w = normal.size.width * 0.5;
CGFloat h = normal.size.height * 0.5;
return [normal stretchableImageWithLeftCapWidth:w topCapHeight:h];
}


执行拉伸代码:
UIImage *image =   [UIImage  stretchableImageWithImgae:@"004"];
[self.myButton setBackgroundImage:image forState:UIControlStateNormal];


拉伸效果图如下:



拉伸完美效果

第一种补充:resize方法(-resizableImageWithCapInsets)

该方法和第一种基本类似,但是这里不方便的地方就是预留的部分不好把握,因为要拉伸的图片大小不可控,不推荐使用,但是在这里也介绍一下。
UIImage *image = [UIImage imageNamed:@"004"];

CGFloat top = 10;     // 顶端预留部分
CGFloat bottom = 10 ; // 底端预留部分
CGFloat left = 40; // 左端预留部分
CGFloat right = 40; // 右端预留部分
UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right);

///注意:拉伸之后一定要赋值回去
image = [image resizableImageWithCapInsets:insets resizingMode:UIImageResizingModeStretch];

//UIImageResizingModeStretch:`拉伸`模式,通过`拉伸`Insets指定的矩形区域来填充图片
//UIImageResizingModeTile:`平铺`模式,通过`重复显示`Insets指定的矩形区域来填充图片
[self.myButton setBackgroundImage:image forState:UIControlStateNormal];


第二种:点击图片直接使用切片拉伸:

进入Assets.xcassets -> 选中图片



两种开始方式



拉伸方式选择



水平拉伸



垂直拉伸



拉伸的几种拉伸方式选择



拉伸切片模式

执行代码:代码里和平常一样
UIImage *image = [UIImage imageNamed:@"004"];
[self.myButton setBackgroundImage:image forState:UIControlStateNormal];




完美拉伸效果

第二种补充:平铺效果



平铺效果测试



平铺效果成功

第二种补充:聊天气泡效果



聊天气泡测试



聊天气泡效果成功展示

最后的两个补充,代码都是很正常的代码:
UIImage *image = [UIImage imageNamed:@"001"];
[self.myButton setBackgroundImage:image forState:UIControlStateNormal];



怎么样,这个切片拉伸功能强大吧?也很方便吧??推荐使用哦!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS OC 图片拉伸