iOS 自定义按钮(实现上图下文字)

相信大家都或多或少的遇到过这样的需求,网上有很多关于实现按钮上图下文字的介绍,使用UIEdgeInsetsMake()来改变按钮文字和图片的位置的方法居多。
下面我用一种简单粗暴的自定义按钮方法来实现该需求。

1、新建一个类,命名为“RYButton”,继承“UIButton”。
(1)“RYButton.h”的内容如下:

#import 

@interface RYButton : UIButton

@property (nonatomic,strong) UIImageView *topImageView;

@property (nonatomic,strong) UILabel *bottomLable;

@end

(2)“RYButton.m”的内容如下:

-(instancetype)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if(self) {
        self.topImageView = [[UIImageView alloc] init];
        self.topImageView.contentMode = UIViewContentModeScaleAspectFit;
        [self addSubview:self.topImageView];
        
        self.bottomLable = [[UILabel alloc] init];
        self.bottomLable.textColor =[UIColor lightGrayColor];
        self.bottomLable.textAlignment = NSTextAlignmentCenter;  //文字居中
        self.bottomLable.adjustsFontSizeToFitWidth = YES;   //文字大小自适应
        [self addSubview:self.bottomLable];

        //给按钮添加边框并设置边框的颜色
        [self.layer setBorderWidth:1];
        CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
        CGColorRef color = CGColorCreate(colorSpaceRef, (CGFloat[]){0.9,0.9,0.9,1}); //RGB and alpha 
        [self.layer setBorderColor:color];
    }
    return self;
}

-(void)layoutSubviews {
    [super layoutSubviews];

    //在这里面可以设置按钮的图片和文字的尺寸
}

2、在需要此按钮的类添加头文件“RYButton.h”,并创建该按钮。

RYButton *button = [RYButton buttonWithType:UIButtonTypeCustom];
button.frame = 你要设计的按钮的尺寸;
[self.view addSubview:button];

在创建UILabel的时候,我建议一点。我一般会创建一个类,专门用来创建各种控件,然后在需要的时候调用即可。
比如我的代码实现

self.bottomLable = [RYKitTool createLabelTextColor:[UIColor lightGrayColor] textAlignment:NSTextAlignmentCenter];
[self addSubview:self.bottomLable];

该类方法的实现为:

+(UILabel *)createLabelTextColor:(UIColor *)textColor textAlignment:(NSTextAlignment)textAlignment {
    UILabel *label = [[UILabel alloc] init];
    label.textColor = textColor;
    label.textAlignment = textAlignment;
    label.adjustsFontSizeToFitWidth = YES;
    return label;
}

这样可以大大减少创建控件的代码量,而且代码重用也比较方便。

你可能感兴趣的:(iOS 自定义按钮(实现上图下文字))