左文字右圖片
[btn setTitleEdgeInsets:UIEdgeInsetsMake(0, -btn.imageView.size.width, 0, btn.imageView.size.width)];
[btn setImageEdgeInsets:UIEdgeInsetsMake(0, btn.titleLabel.bounds.size.width, 0, -btn.titleLabel.bounds.size.width)];
uibutton默認是左圖片,右文字。并且在設置edge insets之前,位置已經有了設定。所以設置title的edge insets,真實的作用是在原來的邊距值基礎上增加或減少某個間距,負值便是減少。以title為例,設置右邊距增加圖片寬度,就使得自己的右邊界距離按鈕的右邊界多了圖片的寬度,正好放下圖片。此時,title lable變小了,而title lable的左邊界還在原來的位置上,所以lable的左邊界距離按鈕的左邊界減少圖片的寬度,lable就和原來一樣大了,而且左側起始位置和圖片的左側起始位置相同了
上圖片下文字
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;//使圖片和文字水平居中顯示
[btn setTitleEdgeInsets:UIEdgeInsetsMake(btn.imageView.frame.size.height ,-btn.imageView.frame.size.width, 0.0,0.0)];//文字距離上邊框的距離增加imageView的高度,距離左邊框減少imageView的寬度,距離下邊框和右邊框距離不變
[btn setImageEdgeInsets:UIEdgeInsetsMake(0.0, 0.0,0.0, -btn.titleLabel.bounds.size.width)];//圖片距離右邊框距離減少圖片的寬度,其它不邊