iOS开发iOS DeveloperiOS 开发

如何利用系统的Button设置titleLable和imageV

2016-05-03  本文已影响217人  单腿行走的大象

1>众所周知,在给系统的Button设置文字和image的时候(非背景颜色),系统默认是左边图片,右边文字,可现在需求是,左边是文字右边是图片.那么我们如何实现这一效果呢?

button有一个我们很少用的两个属性,分别是imageEdgeInsets和titleEdgeInsets,这两个属性就是分别设置图片和文字的距上下左右的距离,我们可以这样设置

addressBtn.imageEdgeInsets=UIEdgeInsetsMake(0, addressBtn.titleLabel.w,0, -addressBtn.titleLabel.w);

addressBtn.titleEdgeInsets=UIEdgeInsetsMake(0, -addressBtn.imageView.w,0, addressBtn.imageView.w);

具体的微调,大家可以自己慢慢试.

2>当一切设置完毕之后,你会发现,嗯位置好了,但是图片显示不符合我的要求,可能image会显示成这个样子

这个问题困扰了笔者好久,尝试用了"端盖"等方法来改变图片的样式,可是也解决不了.详情请见iOS图片拉伸技巧 - M了个J - 博客频道 - CSDN.NET

最终笔者是写了一个UIImage+scale的分类解决了,

.h文件

#import

@interfaceUIImage (scale)

-(UIImage*)scaleToSize:(CGSize)size;

@end

.m文件

#import"UIImage+scale.h"

@implementationUIImage (scale)

-(UIImage*)scaleToSize:(CGSize)size

{

UIGraphicsBeginImageContext(size);

[selfdrawInRect:CGRectMake(0,0, size.width, size.height)];

UIImage* scaledImage =UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

returnscaledImage;

}

@end

代码的使用:

[addressBtn setTitle:@"北京"forState:UIControlStateNormal];

UIImage* image1 = [UIImageimageNamed:@"weizhi"];

[addressBtn setImage:[image1 scaleToSize:CGSizeMake(9.5,13.0)]forState:UIControlStateNormal];

最终达成的效果为:

如有问题欢迎一起讨论,可以在简书解答疑问.

上一篇下一篇

猜你喜欢

热点阅读