如何布局包含Image和Title的UIButton
UIButton中的titleEdgeInsets和imageEdgeInsets可以管理button中image和title的布局。?
1.默認(rèn)情況下,是圖片在左,文字在右,垂直居中顯示,如下圖:
button.titleEdgeInsets = UIEdgeInsetsZero;
button.imageEdgeInsets = UIEdgeInsetsZero;

2.設(shè)置如下布局后,圖片和文字都居中顯示。
button.titleEdgeInsets = UIEdgeInsetsMake(0,-button.imageView.frame.size.width,0,0);
// button.imageEdgeInsets = UIEdgeInsetsMake(0,0,0,-button.titleLabel.frame.size.width);
// 由于iOS8中titleLabel的size為0,用上面這樣設(shè)置有問(wèn)題,修改一下即可
button.imageEdgeInsets = UIEdgeInsetsMake(0,0,0,-button.titleLabel.intrinsicContentSize.width);

3.如果想圖片在上,文字在下,水平居中顯示,則按下面設(shè)置即可:
button.titleEdgeInsets = UIEdgeInsetsMake(0,-button.imageView.frame.size.width,-button.imageView.frame.size.height,0);
// button.imageEdgeInsets = UIEdgeInsetsMake(-button.titleLabel.frame.size.height,0,0,-button.titleLabel.frame.size.width);
// 由于iOS8中titleLabel的size為0,用上面這樣設(shè)置有問(wèn)題,修改一下即可
button.imageEdgeInsets = UIEdgeInsetsMake(-button.titleLabel.intrinsicContentSize.height,0,0,-button.titleLabel.intrinsicContentSize.width);

4.如果覺(jué)得圖片和文字離的太近了,稍微分開(kāi)一點(diǎn):
CGFloat offset = 40.0f;
button.titleEdgeInsets = UIEdgeInsetsMake(0,-button.imageView.frame.size.width,-button.imageView.frame.size.height-offset/2,0);
// button.imageEdgeInsets = UIEdgeInsetsMake(-button.titleLabel.frame.size.height-offset/2,0,0,-button.titleLabel.frame.size.width);
// 由于iOS8中titleLabel的size為0,用上面這樣設(shè)置有問(wèn)題,修改一下即可
button.imageEdgeInsets = UIEdgeInsetsMake(-button.titleLabel.intrinsicContentSize.height-offset/2,0,0,-button.titleLabel.intrinsicContentSize.width);

5.文字左對(duì)齊,圖片右對(duì)齊
button.titleEdgeInsets = UIEdgeInsetsMake(0,-button.imageView.frame.size.width - button.frame.size.width + button.titleLabel.intrinsicContentSize.width,0,0);
? ? button.imageEdgeInsets = UIEdgeInsetsMake(0,0,0,-button.titleLabel.frame.size.width - button.frame.size.width + button.imageView.frame.size.width);
