Button內(nèi)部有很多控件, 如果使用默認的,有的時候圖片顯示大小不統(tǒng)一,導(dǎo)致文字不對齊等, 這個時候需要進行重寫調(diào)整. 通過自定義UIButton,調(diào)整button內(nèi)部控件位置
1.方法一,重寫button內(nèi)部方法, xib下無效
//button內(nèi)部可以用來調(diào)整的4個方法
- (CGRect)backgroundRectForBounds:(CGRect)bounds;//調(diào)整背景
- (CGRect)contentRectForBounds:(CGRect)bounds;//調(diào)整邊界矩形
/*=====一般主要調(diào)整下面兩個=====*/
- (CGRect)titleRectForContentRect:(CGRect)contentRect; // 調(diào)整文字 ===>重寫統(tǒng)一設(shè)置
- (CGRect)imageRectForContentRect:(CGRect)contentRect; // 調(diào)整圖片(不是背景),
/**
* 調(diào)整圖片的顯示效果
*
* @param contentRect 內(nèi)容的區(qū)域
*
* @return 圖片的顯示范圍
*/
- (CGRect)imageRectForContentRect:(CGRect)contentRect {
CGFloat width = 40;
CGFloat height = 46;
CGFloat x = (contentRect.size.width - width) * 0.5;
CGFloat y = 20;
// 自己調(diào)試!不固定!
return CGRectMake(x, y, width, height);
}
2.方法二, 在外部調(diào)整用
button.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0); ===>設(shè)置單個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);
}