為了防止丟失或遺忘栖博,記錄下這個UIButton的分類唧喉,用來實現(xiàn)上下差购,左右的iamge與title位置的按鈕布局穷躁。
.h文件
#import@interface UIButton (typeLayout)
typedef NS_ENUM(NSUInteger,HLButtonEdgeInsetsStyle)
{
HLButtonEdgeInsetsStyleTop,//image在上耕肩,label在下
HLButtonEdgeInsetsStyleLeft,//image在左,label在右
HLButtonEdgeInsetsStyleBottom,//image在下,label在上
HLButtonEdgeInsetsStyleRight//image在右,label在左
};
/**
*? 設置button內(nèi)部的image和title的布局樣式
*
*? @param style 布局樣式
*? @param space 間距
*/
- (void)layoutButtonWithEdgeInsetsStyle:(HLButtonEdgeInsetsStyle)style imageTitleSpace:(CGFloat)space;
@end
.m文件
#import "UIButton+typeLayout.h"
@implementation UIButton (typeLayout)
- (void)layoutButtonWithEdgeInsetsStyle:(HLButtonEdgeInsetsStyle)style imageTitleSpace:(CGFloat)space
{
//1问潭、得到imageView和titleLabel的寬猿诸、高
CGFloat imageWidth = self.imageView.frame.size.width;
CGFloat imageHeight = self.imageView.frame.size.height;
CGFloat labelWidth = 0;
CGFloat labelHeight = 0;
if([UIDevice currentDevice].systemVersion.floatValue >=8.0)
{
//由于iOS8中titleLabel的size為0,分開設置
labelWidth = self.titleLabel.intrinsicContentSize.width;
labelHeight = self.titleLabel.intrinsicContentSize.height;
}
else
{
labelWidth = self.titleLabel.frame.size.width;
labelHeight = self.titleLabel.frame.size.height;
}
//2狡忙、聲明全局的imageEdgeInsets和labelEdgeInsets
UIEdgeInsets imageEdgeInsets = UIEdgeInsetsZero;
UIEdgeInsets labelEdgeInsets = UIEdgeInsetsZero;
//3狞山、根據(jù)style和space設置
switch (style) {
case HLButtonEdgeInsetsStyleTop:
imageEdgeInsets = UIEdgeInsetsMake(-labelHeight-space/2.0, 0, 0, -labelWidth);
labelEdgeInsets = UIEdgeInsetsMake(0, -imageWidth, -imageHeight-space/2.0, 0);
break;
case HLButtonEdgeInsetsStyleLeft:
imageEdgeInsets = UIEdgeInsetsMake(0, -space/2.0, 0, space/2.0);
labelEdgeInsets = UIEdgeInsetsMake(0, space/2.0, 0, space/2.0);
break;
case HLButtonEdgeInsetsStyleBottom:
imageEdgeInsets = UIEdgeInsetsMake(0, 0, -labelHeight-space/2.0, -labelWidth);
labelEdgeInsets = UIEdgeInsetsMake(-labelHeight-space/2.0, 0, -imageWidth, 0);
break;
case HLButtonEdgeInsetsStyleRight:
imageEdgeInsets = UIEdgeInsetsMake(0, labelWidth+space/2.0, 0, -labelWidth-space/2.0);
labelEdgeInsets = UIEdgeInsetsMake(0, -imageWidth - space/2.0, 0, imageWidth+space/2.0);
break;
default:
break;
}
self.titleEdgeInsets = labelEdgeInsets;
self.imageEdgeInsets = imageEdgeInsets;
}
@end
直接調(diào)用殖演,方便快捷!