制作可拉伸的UIImage




通常一个项目里,有很多按钮样式是一样的,但是长度是不一样的,如果直接对按钮的UIImage进行frame的调整,拉伸,图片就变形了。变得很难看。

iOS提供了2个方法,一个是旧版本的已经不用了stretchableImageWithLeftCapWidth:topCapHeight

我用的是resizableImageWithCapInsets,这个方法得至少在ios5系统下才能用

该方法提供一个参数,是UIEdgeInsets,可以使用UIEdgeInsetsMake宏创建

typedef struct {
CGFloat top, left, bottom, right;
} UIEdgeInsets;


这个结构定义了4个值,分别是4个边的偏移值

比如说 (4,10,4,10) 的话,就定义了一个区域,那个区域的上边距离图片上边4 point,距离左边10 point,距离底边 4 point,距离右边 10point

这个区域在图片被拉伸的时候,会重复填充相应的区域。


例如这个按钮:

如果直接设置长度的话,就变成这个样子了,变形了

但是如果截取中间一个区域来填充拉伸的区域

这个区域的话,效果就会变成这样

    UIEdgeInsets inset = UIEdgeInsetsMake(0, image.size.width/2-10, 0, image.size.width/2-10);
    [registerBtn setBackgroundImage:[image resizableImageWithCapInsets:inset ] forState:UIControlStateNormal];
    [registerBtn setBackgroundImage:[imageSelected resizableImageWithCapInsets:inset ] forState:UIControlStateSelected];

这个代码选取了正中间20point的区域作为填充的区域产生了上图的效果


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值