图片的拉伸

图片的拉伸。如原图为圆角,

若直接作为button的背景图片,那么效果会是这样。

CGFloat btnX = 80;
CGFloat btnY = 150;
CGFloat btnW = 100;
CGFloat btnH = 20;
    
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(btnX, btnY, btnW, btnH);
UIImage *imageNormal = [UIImage imageNamed:@"audio_button_nomal"];
[btn setBackgroundImage:imageNormal forState:UIControlStateNormal];

此时可以用
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:
该函数是用来创建一个内容可拉伸,而边角不拉伸的图片,需要两个参数,一个是左边不拉伸区域的宽度,另一个是上面不拉伸的高度。
可拉伸的范围是距离leftCapWidth后的1竖排像素,距离topCapHeight后的1横排像素。
如指定参数为10,5。那么表示图片左边10个像素,上边5个像素,不会被拉伸。x坐标为11的一个像素会被横向复制,y坐标为6的一个像素会被纵向复制
对于该图片,可以用

imageNormal = [imageNormal stretchableImageWithLeftCapWidth:floorf(imageNormal.size.width/2) topCapHeight:floorf(imageNormal.size.height/2)];
//floorf(x)表示取不大于x的最大整数
//代码含义为水平方向将图片中间的1像素用来拉伸,垂直方向同理。

效果为

原文地址:https://www.cnblogs.com/Apologize/p/4844810.html