主要是UIEdgeInsets这个属性
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]
btn.frame = CGRectMake(ScreenWidth/2-40, 20, 100, 100)
btn.layer.masksToBounds = YES
btn.layer.cornerRadius = 3
[btn setTitle:@"添加新的银行卡" forState:0]
[btn setImage:[UIImage imageNamed:@"加号"] forState:0]
[btn setTitleColor:blue_Color forState:0]
[btn setBackgroundColor:[UIColor orangeColor]]
btn.titleLabel.font = [UIFont systemFontOfSize:14]
//先使按钮的文字和图片居中
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter
//设置文字的位置相对于图片的上左下右(总感觉是反的呐)
[btn setTitleEdgeInsets:UIEdgeInsetsMake(btn.imageView.frame.size.height +10,-btn.imageView.frame.size.width, 0.0,0.0)]
//设置图片的位置相对于文字的上左下右
[btn setImageEdgeInsets:UIEdgeInsetsMake(0.0, btn.titleLabel.bounds.size.width, btn.titleLabel.bounds.size.height, 0.0)]
[btn addTarget:self action:@selector(btnAddCard) forControlEvents:UIControlEventTouchUpInside]
本人也觉得这个有些难用,图片和文字的相对位置(上左下右)感觉上是反着来