ios拓展7-调整button内部控件位置OC版

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);
}
before
after
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);
}

你可能感兴趣的:(ios拓展7-调整button内部控件位置OC版)