1. 程式人生 > >iOS - 按鈕[圖上文下]的設定

iOS - 按鈕[圖上文下]的設定

內容不夠,圖來湊... 

一個工具類.h

@interface ZJJCustomButtonSubview : UIView

/**

使按鈕子檢視變為[圖上文下]

@param button 要改變位置的按鈕

@param insert_y 圖片和文字的上下間距

*/

+ (void)zjjCustomButton:(UIButton *)button imageTitleInsert:(CGFloat)insert_y;

@end

工具類.m

+ (void)zjjCustomButton:(UIButton *)button imageTitleInsert:(CGFloat)insert_y {

    button.imageEdgeInsets = UIEdgeInsetsMake(-(button.titleLabel.frame.size.height+insert_y)/2,

                                              button.titleLabel.frame.size.width/2,

                                              (button.titleLabel.frame.size.height+insert_y)/2,

                                              -button.titleLabel.frame.size.width/2

                                              );

    button.titleEdgeInsets = UIEdgeInsetsMake((button.imageView.frame.size.height+insert_y)/2,

                                              -button.imageView.frame.size.width,

                                              -(button.imageView.frame.size.height+insert_y)/2,

                                              0

                                              );

}

本該到此結束,但...

1.為什麼不用button.titleLabel.intrinsicContentSize代替button.titleLabel.frame.size,這是因為前者表示的是尺寸太準確了,當文字過多或者按鈕過小的時候,就會發現問題,可以理解成期望尺寸.後者則表示實際的尺寸.

2.在呼叫該加號方法之前,一定要給button.imageView寫點啥,比如:button.imageView.backgroundColor = [UIColor clearColor];

或者  button.imageView.hidden = NO;

否則,尺寸獲取不到.至於為什麼多這麼一個操作,我特麼還想知道呢...