第一种 自定义按钮
1、自定义一个类(WCButton)继承自UIButton,此种方法适用于app内需要大量的字体在下图片在上的按钮时使用
重写- (CGRect)titleRectForContentRect:(CGRect)contentRect;此方法可以设置按钮的字体位置
- (CGRect)titleRectForContentRect:(CGRect)contentRect{
CGFloat titleX = 0;
CGFloat titleHeight = contentRect.size.height * kTitleRatio;
CGFloat titleY = contentRect.size.height - titleHeight ;
CGFloat titleWidth = contentRect.size.width;
return CGRectMake(titleX, titleY, titleWidth, titleHeight);
}//设置字体在下,kTitleRatio为一个宏值,设置字体从按钮的什么位置开始
重写-(CGRect)imageRectForContentRect:(CGRect)contentRect;此方法可以设置按钮的图片的位置
- (CGRect)imageRectForContentRect:(CGRect)contentRect{
CGFloat imageHeight = contentRect.size.height*(1-kTitleRatio)*3/4;
CGFloat imageY = contentRect.size.height*(1-kTitleRatio)/8;
CGFloat imageWidth = imageHeight;
CGFloat imageX = (contentRect.size.height-imageWidth)/2;
return CGRectMake(imageX, imageY, imageWidth, imageHeight);
}//设置图片在上边
2、自定义一个类(FWCButton)继承自UIButton,此方法适用于app内需要大量的调整按钮的图片与字体的位置时使用
首先定义一个枚举值
typedef NS_ENUM(NSUInteger, MKButtonEdgeInsetsStyle) {
MKButtonEdgeInsetsStyleTop, // image在上,label在下
MKButtonEdgeInsetsStyleLeft, // image在左,label在右
MKButtonEdgeInsetsStyleBottom, // image在下,label在上
MKButtonEdgeInsetsStyleRight // image在右,label在左
};
待补充
第二种方法 不用自定义
1、正常生成按钮,最后只需两句代码设置即可
butn.imageEdgeInsets=UIEdgeInsetsMake(0,8,21,butn.titleLabel.bounds.size.width);通过此方法设置按钮图片位置
butn.titleEdgeInsets=UIEdgeInsetsMake(butn.imageView.bounds.size.width, butn.titleLabel.bounds.size.width-65, 0, 0);通过此方法设置按钮的字体位置