123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- //
- // EBButton.m
- // ZGEBook
- //
- // Created by wsl on 2020/4/23.
- // Copyright © 2020 ZGEBook. All rights reserved.
- //
- #import "SLButton.h"
- @interface SLButton ()
- @end
- @implementation SLButton
- #pragma mark - Override
- - (instancetype)init {
- self = [super init];
- if (self) {
- }
- return self;
- }
- - (void)didMoveToSuperview {
- if (self.superview) {
- [self addSubview:self.imageView];
- [self addSubview:self.titleLabel];
- }
- }
- - (void)didMoveToWindow {
- if (self.superview) {
- [self addSubview:self.imageView];
- [self addSubview:self.titleLabel];
- }
- }
- #pragma mark - Getter
- - (UIImageView *)imageView {
- if (!_imageView) {
- _imageView = [[UIImageView alloc] init];
- // _imageView.backgroundColor = [UIColor greenColor];
- }
- return _imageView;
- }
- - (UILabel *)titleLabel {
- if (!_titleLabel) {
- _titleLabel = [[UILabel alloc] init];
- // _titleLabel.backgroundColor = [UIColor greenColor];
- }
- return _titleLabel;
- }
- #pragma mark - Public Methods
- /// 设置文本和图片的位置
- - (void)setTitleImageLayoutStyle:(SLButtonStyle)titleImageStyle space:(CGFloat)space {
- switch (titleImageStyle) {
- case SLButtonStyleImageLeft:
- [self imageLeft:space];
- break;
- case SLButtonStyleImageRight:
- [self imageRight:space];
- break;
- case SLButtonStyleImageTop:
- [self imageTop:space];
- break;
- case SLButtonStyleImageBottom:
- [self imageBottom:space];
- break;
- default:
- break;
- }
- }
- - (void)imageLeft:(CGFloat)space {
- CGSize imageSize = self.imageView.image.size;
- CGSize titleSize = [self.titleLabel sizeThatFits:CGSizeZero];
- [self.imageView mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.centerY.mas_equalTo(self.mas_centerY);
- make.size.mas_equalTo(imageSize);
- make.centerX.mas_equalTo(self.mas_centerX).offset(-imageSize.width/2.0-space/2.0);
- }];
- [self.titleLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.centerY.mas_equalTo(self.mas_centerY);
- make.size.mas_equalTo(titleSize);
- make.centerX.mas_equalTo(self.mas_centerX).offset(titleSize.width/2.0+space/2.0);
- }];
- }
- - (void)imageRight:(CGFloat)space {
- CGSize imageSize = self.imageView.image.size;
- CGSize titleSize = [self.titleLabel sizeThatFits:CGSizeZero];
- [self.imageView mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.centerY.mas_equalTo(self.mas_centerY);
- make.size.mas_equalTo(imageSize);
- make.centerX.mas_equalTo(self.mas_centerX).offset(imageSize.width/2.0+space/2.0);
- }];
- [self.titleLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.centerY.mas_equalTo(self.mas_centerY);
- make.size.mas_equalTo(titleSize);
- make.centerX.mas_equalTo(self.mas_centerX).offset(-titleSize.width/2.0-space/2.0);
- }];
- }
- - (void)imageTop:(CGFloat)space {
- CGSize imageSize = self.imageView.image.size;
- CGSize titleSize = [self.titleLabel sizeThatFits:CGSizeZero];
- CGFloat heightGap = imageSize.height - titleSize.height; //高度差距
- [self.imageView mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.centerX.mas_equalTo(self.mas_centerX);
- make.size.mas_equalTo(imageSize);
- make.centerY.mas_equalTo(self.mas_centerY).offset(-imageSize.height/2.0-space/2.0 + heightGap/2.0);
- }];
- [self.titleLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.centerX.mas_equalTo(self.mas_centerX);
- make.size.mas_equalTo(titleSize);
- make.centerY.mas_equalTo(self.mas_centerY).offset(titleSize.height/2.0+space/2.0 + heightGap/2.0);
- }];
- }
- - (void)imageBottom:(CGFloat)space {
- CGSize imageSize = self.imageView.image.size;
- CGSize titleSize = [self.titleLabel sizeThatFits:CGSizeZero];
- [self.imageView mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.centerX.mas_equalTo(self.mas_centerX);
- make.size.mas_equalTo(imageSize);
- make.centerY.mas_equalTo(self.mas_centerY).offset(imageSize.height/2.0+space/2.0);
- }];
- [self.titleLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.centerX.mas_equalTo(self.mas_centerX);
- make.size.mas_equalTo(titleSize);
- make.centerY.mas_equalTo(self.mas_centerY).offset(-titleSize.height/2.0-space/2.0);
- }];
- }
- @end
|