一、按钮大小为背景图片的大小
UIButton * Button=[[UIButton alloc]init];
[Button setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
[Button setBackgroundImage:[UIImage imageNamed:highimageName] forState:UIControlStateHighlighted];
//按钮的大小为当前图片的大小
Button.size = Button.currentBackgroundImage.size;
效果如图:

2.png
二、按钮大小大于背景图片的大小,背景图片原图显示、不变形
UIButton * Button=[[UIButton alloc]init];
[Button setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];;
[Button setImage:[UIImage imageNamed:highimageName] forState:UIControlStateHighlighted];
//按钮的大小为当前按钮的大小
Button.size =CGSizeMake(40, 40);
Button.imageView.contentMode=UIViewContentModeCenter;
效果如图:

1.png
参考文档:UIViewContentMode详解