UIEdgeInsets實際就是一個結(jié)構(gòu)體,UIEdgeInsetsMake(<#CGFloat top#>, <#CGFloat left#>, <#CGFloat bottom#>, <#CGFloat right#>)

image.png
上面的結(jié)構(gòu)體,我理解就是距離上、左、下、右的偏移距離,比如上,正數(shù)就是距離上面增加偏移量,負(fù)數(shù)就是減少偏移量
居中之后相當(dāng)于抵消了原來的偏移量,還要再增加一倍的偏移量,所以最后是兩倍的偏移量,還可以增加間距
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setImage:[UIImage imageNamed:@"pullup"] forState:UIControlStateNormal];
[btn setTitle:@"更多sdfac打發(fā)的發(fā)" forState:UIControlStateNormal];
btn.backgroundColor = [UIColor lightGrayColor];
btn.frame = CGRectMake(100, 300, 100, 30);
[self.view addSubview:btn];
// 還可增設(shè)間距
CGFloat spacing = 3.0;
// 圖片右移
CGSize imageSize = btn.imageView.frame.size;
btn.titleEdgeInsets = UIEdgeInsetsMake(0.0, - imageSize.width * 2 - spacing, 0.0, 0.0);
// 文字左移
CGSize titleSize = btn.titleLabel.frame.size;
btn.imageEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, 0.0, - titleSize.width * 2 - spacing);
重新設(shè)置titleLabel的text也要重新執(zhí)行后面兩句,當(dāng)文本太長的時候顯示有問題,需要截取