iOS-自定义 UIButton-文字在左、图片在右(一)

1. 系统默认 Button 添加图片文字样式(见下图):
iOS-自定义 UIButton-文字在左、图片在右(一)_第1张图片
Button默认状态图片文字位置.png
2. 现在想实现如下效果(见下图):
iOS-自定义 UIButton-文字在左、图片在右(一)_第2张图片
自定义Button图片在右边 文字在左边的效果.png
3. 实现代码
  1. 自定义 HQCustomButton 继承自 UIButton,重写layoutSubviews方法(见如下代码):

     #import "HQCustomButton.h"
    
     @implementation HQCustomButton
    
     - (void)layoutSubviews
     {
         [super layoutSubviews];
         
         /** 修改 title 的 frame */
         // 1.获取 titleLabel 的 frame
         CGRect titleLabelFrame = self.titleLabel.frame;
         // 2.修改 titleLabel 的 frame
         titleLabelFrame.origin.x = 0;
         // 3.重新赋值
         self.titleLabel.frame = titleLabelFrame;
         
         /** 修改 imageView 的 frame */
         // 1.获取 imageView 的 frame
         CGRect imageViewFrame = self.imageView.frame;
         // 2.修改 imageView 的 frame
         imageViewFrame.origin.x = titleLabelFrame.size.width;
         // 3.重新赋值
         self.imageView.frame = imageViewFrame;
     }
    
     @end
    
  2. 在创建 Button 的地方用自定义 HQCustomButton 创建即可(见如下代码):
    HQCustomButton *button01 = [[HQCustomButton alloc] init];
    button01.titleLabel.font = [UIFont systemFontOfSize:14];
    [button01 setTitle:@"科室" forState:UIControlStateNormal];
    UIImage *imageBtn01 = [UIImage imageNamed:@"YellowDownArrow"];
    [button01 setImage:imageBtn01 forState:UIControlStateNormal];
    [view addSubview:button01];
    [button01 mas_makeConstraints:^(MASConstraintMaker *make) {
    make.centerY.equalTo(view);
    make.left.equalTo(view).offset(kScreenWidth / 8);
    }];

4. 实现效果(见下图):
iOS-自定义 UIButton-文字在左、图片在右(一)_第3张图片
实现效果.png
特别提示:

在重写 HQCustomButton(自定义 Button)的layoutSubviews时候一定要先调用[super layoutSubviews];方法,不然按钮会显示不出来(见下图):

iOS-自定义 UIButton-文字在左、图片在右(一)_第4张图片
一定要先调用[super layoutSubviews].png
iOS-自定义 UIButton-文字在左、图片在右(一)_第5张图片
不掉用[super layoutSubviews]会出现的问题.png

你可能感兴趣的:(iOS-自定义 UIButton-文字在左、图片在右(一))