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;
否則,尺寸獲取不到.至於為什麼多這麼一個操作,我特麼還想知道呢...