Button内部有很多控件, 如果使用默认的,有的时候图片显示大小不统一,导致文字不对齐等, 这个时候需要进行重写调整. 通过自定义UIButton,调整button内部控件位置
1.方法一,重写button内部方法, xib下无效
//button内部可以用来调整的4个方法
- (CGRect)backgroundRectForBounds:(CGRect)bounds;//调整背景
- (CGRect)contentRectForBounds:(CGRect)bounds;//调整边界矩形
/*=====一般主要调整下面两个=====*/
- (CGRect)titleRectForContentRect:(CGRect)contentRect; // 调整文字 ===>重写统一设置
- (CGRect)imageRectForContentRect:(CGRect)contentRect; // 调整图片(不是背景),
/**
* 调整图片的显示效果
*
* @param contentRect 内容的区域
*
* @return 图片的显示范围
*/
- (CGRect)imageRectForContentRect:(CGRect)contentRect {
CGFloat width = 40;
CGFloat height = 46;
CGFloat x = (contentRect.size.width - width) * 0.5;
CGFloat y = 20;
// 自己调试!不固定!
return CGRectMake(x, y, width, height);
}
2.方法二, 在外部调整用
button.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0); ===>设置单个button
button.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
3.方法三,重写 layoutSubviews
-(void)layoutSubviews{
[super layoutSubviews];
self.imageView.frame = CGRectMake(6, self.imageView.frame.origin.y, 44, 44);
self.titleLabel.frame = CGRectMake(48, 0, 44, 44);
}