ios image 拉伸
在开发中会遇到一些小纯色的图片,放入很大一张背景上(比较常见的场景为聊天对话的气泡随文字多少拉伸)自动扩展边缘会失真有锯齿。
使图片拉伸有两种方法。
1.纯代码方式
2.在Assets中对图片设置。
在讲解两种拉伸方式时,说说应该拉伸那部分。通常拉伸使其边缘正常应该使用中间部位做拉伸平铺,这就涉及到图片边缘保护,通常设置top为height/2,left:width/2,bottom:height/2-1,right:width/2-1,用中间1个单位设置拉伸。
几种实现方式如下
CGSize size = image.size;
CGFloat height = size.height;
CGFloat width = size.width;
//第一种
image=[image resizableImageWithCapInsets:UIEdgeInsetsMake(height*0.5, width*0.5, height*0.5-1, width*0.5-1)];
/*
UIImageResizingModeTile = 0,平铺 通常使用该种方式
UIImageResizingModeStretch = 1, 拉伸
*/
//第二种
[image resizableImageWithCapInsets:UIEdgeInsetsMake(height*0.5, width*0.5, height*0.5-1, width*0.5-1) resizingMode:UIImageResizingModeTile];
// 第三种;右边和底部会自动计算出保护-1的值
//default is 0. if non-zero, horiz. stretchable. right cap is calculated as width - leftCapWidth - 1
//右边需要保护的区域 = 图片width - leftCapWidth -1
//default is 0. if non-zero, horiz. stretchable. right cap is calculated as width - topCapWidth - 1
//底部需要首保护的区域 = 图片height - topCapWidth - 1
[image stretchableImageWithLeftCapWidth:image.size.width*0.5 topCapHeight:image.size.height*0.5];
2 assets中对image设置方式