如何拉伸有透明区域的png图片来做UIButton的背景图片

1.使用boundingRect来动态计算文本的尺寸
- ( CGRect )boundingRectWithSize:( CGSize )size options:( NSStringDrawingOptions )options attributes:( NSDictionary *)attributes context:( NSStringDrawingContext *)context NS_AVAILABLE_IOS ( 7 _0);
//比如文本如下,通过计算得到的尺寸是120*120

//那么可以设置btn.frame = {0,0,120,120};
//设置背景图片(四周有透明区域的png图片)

//这样文字就会处于背景图片之外.为了解决这个问题,我们首先要做的就是,把btn的上下左右各加20.这样背景图片会自动拉伸.变成{0,0,160,160};
//这个时候,就会变成下面的样子,由于文字会自动从左侧开始绘制,到一行的结尾.在自动换行.


//为了解决这个问题,需要使用到btn的另外一个属性
@property(nonatomic)         UIEdgeInsets contentEdgeInsets UI_APPEARANCE_SELECTOR;// default is UIEdgeInsetsZero
btn.contentEdgeInsets= UIEdgeInsetsMake(20,20,20,20);
//这样文本在按钮btn中显示会距离btn的frame四周有20的间距
//这样文字就能正常的显示在背景图片之中了.
//但是另外一个问题又来了.当文字过多的时候.由于图片拉伸是按照比例拉伸的,当图片拉伸,图片的间隙也会放大.而且图片也的边缘也越来与模糊

//但是另外一个问题又来了.当文字过多的时候.由于图片拉伸是按照比例拉伸的,当图片拉伸,图片的间隙也会放大.而且图片也的边缘也越来与模糊


//解决方法,利用UIImage的对象方法将对图片进行指定范围的拉伸
- (UIImage*)resizableImageWithCapInsets:(UIEdgeInsets)capInsetsNS_AVAILABLE_IOS(5_0);// create a resizable version of this image. the interior is tiled when drawn.
- (UIImage*)resizableImage:(NSString*)name
{
   
UIImage *normal = [UIImageimageNamed:name];
   
CGFloat w = normal.size.width* 0.5;
   
CGFloat h = normal.size.height* 0.5;
   
return [normal resizableImageWithCapInsets:UIEdgeInsetsMake(h, w, h, w)];
}
//开始图片原始大小为60*60 ->将拉伸到160*160
//1.垂直方向上拉伸(保护顶部一半不拉伸, 底部一半不拉伸.)
//变成了(60 * 160)
>->
//2.水平方向上拉伸(保护左边一半不拉伸,保护右边一半不拉伸)
//变成了(160 * 160 )
->>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值