关于UIButton字与图片位置的调整

第一种 自定义按钮

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);通过此方法设置按钮的字体位置

你可能感兴趣的:(关于UIButton字与图片位置的调整)