You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
747 lines
28 KiB
747 lines
28 KiB
// |
|
// TFButton.m |
|
// TFReader |
|
// |
|
// Created by 谢腾飞 on 2020/12/16. |
|
// Copyright © 2020 xtfei_2011@126.com. All rights reserved. |
|
// |
|
|
|
#import "TFButton.h" |
|
|
|
@interface TFButton () |
|
{ |
|
BOOL _showMaskView; |
|
TFButtonIndicator _buttonIndicatior; |
|
} |
|
|
|
@property (nonatomic ,strong) UIView *bottomHoldView; |
|
@property (nonatomic ,strong) UIImageView *buttonImageView; |
|
@property (nonatomic ,strong) UILabel *buttonTitleLabel; |
|
@property (nonatomic ,strong) UILabel *buttonSubTitleLabel; |
|
@property (nonatomic ,strong) UILabel *cornerMarkLabel; |
|
@property (nonatomic ,strong) UIView *maskView; |
|
|
|
@end |
|
|
|
@implementation TFButton |
|
|
|
- (instancetype)initWithButtonTitle:(NSString *)buttonTitle buttonImageName:(NSString *)buttonImageName buttonIndicator:(TFButtonIndicator)buttonIndicatior |
|
{ |
|
return [self initWithFrame:CGRectZero buttonTitle:buttonTitle buttonSubTitle:@"" buttonImageName:buttonImageName buttonIndicator:buttonIndicatior showMaskView:NO]; |
|
} |
|
|
|
- (instancetype)initWithFrame:(CGRect)frame buttonTitle:(NSString *)buttonTitle buttonImageName:(NSString *)buttonImageName buttonIndicator:(TFButtonIndicator)buttonIndicatior |
|
{ |
|
return [self initWithFrame:frame buttonTitle:buttonTitle buttonSubTitle:@"" buttonImageName:buttonImageName buttonIndicator:buttonIndicatior showMaskView:NO]; |
|
} |
|
|
|
- (instancetype)initWithFrame:(CGRect)frame buttonTitle:(NSString *)buttonTitle buttonImageName:(NSString *)buttonImageName buttonIndicator:(TFButtonIndicator)buttonIndicatior showMaskView:(BOOL)showMaskView |
|
{ |
|
return [self initWithFrame:frame buttonTitle:buttonTitle buttonSubTitle:@"" buttonImageName:buttonImageName buttonIndicator:buttonIndicatior showMaskView:showMaskView]; |
|
} |
|
|
|
- (instancetype)initWithFrame:(CGRect)frame buttonTitle:(NSString *)buttonTitle buttonSubTitle:(NSString *)buttonSubTitle buttonImageName:(NSString *)buttonImageName buttonIndicator:(TFButtonIndicator)buttonIndicatior showMaskView:(BOOL)showMaskView |
|
{ |
|
if (self = [super initWithFrame:frame]) { |
|
|
|
self.graphicDistance = 10; |
|
self.buttonImageScale = 0.7; |
|
self.horizontalMigration = 0; |
|
self.buttonTitle = buttonTitle; |
|
self.buttonSubTitle = buttonSubTitle; |
|
self.buttonImageName = buttonImageName; |
|
|
|
_showMaskView = showMaskView; |
|
_buttonIndicatior = buttonIndicatior; |
|
|
|
[self createSubviews]; |
|
} |
|
return self; |
|
} |
|
|
|
- (void)createSubviews |
|
{ |
|
[self addSubview:self.bottomHoldView]; |
|
|
|
self.buttonTitleLabel.text = _buttonTitle; |
|
[self.bottomHoldView addSubview:self.buttonTitleLabel]; |
|
|
|
if (_buttonImageName.length > 0) { |
|
if ([_buttonImageName hasPrefix:@"http"]) { |
|
[self.buttonImageView setImageWithURL:[NSURL URLWithString:_buttonImageName] placeholder:HoldImage options:YYWebImageOptionSetImageWithFadeAnimation completion:nil]; |
|
} else { |
|
self.buttonImageView.image = [[UIImage imageNamed:_buttonImageName] imageWithRenderingMode:UIImageRenderingModeAutomatic]; |
|
} |
|
[self.bottomHoldView addSubview:self.buttonImageView]; |
|
} |
|
|
|
self.cornerMarkLabel.hidden = YES; |
|
[self.buttonImageView addSubview:self.cornerMarkLabel]; |
|
[self.cornerMarkLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.centerX.mas_equalTo(self.buttonImageView.mas_right); |
|
make.centerY.mas_equalTo(self.buttonImageView.mas_top); |
|
make.height.mas_equalTo(CGFLOAT_MIN); |
|
make.width.mas_equalTo(CGFLOAT_MIN); |
|
}]; |
|
|
|
if (_buttonSubTitle.length > 0) { |
|
self.buttonSubTitleLabel.text = _buttonSubTitle; |
|
[self.bottomHoldView addSubview:self.buttonSubTitleLabel]; |
|
} |
|
|
|
if (_showMaskView) { |
|
[self addSubview:self.maskView]; |
|
} |
|
} |
|
|
|
- (void)layoutSubviews |
|
{ |
|
[super layoutSubviews]; |
|
|
|
switch (_buttonIndicatior) { |
|
case TFButtonIndicatorTitleLeft: // 文字左 图片右 |
|
[self createCustomButtonIndicatorTitleLeft]; |
|
break; |
|
case TFButtonIndicatorTitleRight: // 文字右 图片左 |
|
[self createCustomButtonIndicatorTitleRight]; |
|
break; |
|
case TFButtonIndicatorTitleTop: // 文字上 图片下 |
|
[self createCustomButtonIndicatorTitleTop]; |
|
break; |
|
case TFButtonIndicatorTitleBottom: // 文字下 图片上 |
|
[self createCustomButtonIndicatorTitleBottom]; |
|
break; |
|
case TFButtonIndicatorImageLeftBothLeft: // 图片左 文字右 (同时靠左) |
|
[self createCustomButtonIndicatorImageLeftBothLeft]; |
|
break; |
|
case TFButtonIndicatorImageLeftBothRight: // 图片左 文字右 (同时靠右) |
|
[self createCustomButtonIndicatorImageLeftBothRight]; |
|
break; |
|
case TFButtonIndicatorImageRightBothLeft: // 文字左 图片右 (同时靠左) |
|
[self createCustomButtonIndicatorImageRightBothLeft]; |
|
break; |
|
case TFButtonIndicatorImageRightBothRight: // 文字左 图片右 (同时靠右) |
|
[self createCustomButtonIndicatorImageRightBothRight]; |
|
break; |
|
|
|
default: |
|
break; |
|
} |
|
} |
|
|
|
- (void)undoMaskView |
|
{ |
|
self.maskView.hidden = YES; |
|
[self.maskView removeAllSubviews]; |
|
[self.maskView removeFromSuperview]; |
|
self.maskView = nil; |
|
} |
|
|
|
// 图片边长 |
|
- (CGFloat)getButtonImageViewSideLength |
|
{ |
|
if (self.height >= self.width) { |
|
return self.width * self.buttonImageScale; |
|
} |
|
return self.height * self.buttonImageScale; |
|
} |
|
|
|
// 控件边距 |
|
- (CGFloat)getViewMargin |
|
{ |
|
if (self.height >= self.width) { |
|
return self.width * (1 - self.buttonImageScale); |
|
} |
|
return self.height * (1 - self.buttonImageScale); |
|
} |
|
|
|
// 文字左 图片右 |
|
- (void)createCustomButtonIndicatorTitleLeft |
|
{ |
|
if (_buttonImageName.length > 0) { |
|
[self.bottomHoldView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.centerX.mas_equalTo(self.mas_centerX).with.offset(self.horizontalMigration); |
|
make.centerY.mas_equalTo(self.mas_centerY); |
|
make.height.mas_equalTo(self.mas_height); |
|
make.left.mas_equalTo(self.buttonTitleLabel.mas_left); |
|
make.right.mas_equalTo(self.buttonImageView.mas_right); |
|
}]; |
|
[self.buttonImageView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(self.buttonTitleLabel.mas_right).with.offset(self.graphicDistance); |
|
make.centerY.mas_equalTo(self.bottomHoldView.mas_centerY); |
|
make.width.height.mas_equalTo([self getButtonImageViewSideLength]); |
|
}]; |
|
|
|
self.buttonTitleLabel.textAlignment = NSTextAlignmentRight; |
|
[self.buttonTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.top.mas_equalTo(0); |
|
make.left.mas_equalTo(0); |
|
make.width.mas_equalTo([TFViewHelper getDynamicWidthWithLabel:self.buttonTitleLabel] > self.width?self.width:[TFViewHelper getDynamicWidthWithLabel:self.buttonTitleLabel]); |
|
make.height.mas_equalTo(self.mas_height); |
|
}]; |
|
} else { |
|
[self.bottomHoldView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.centerX.mas_equalTo(self.mas_centerX).with.offset(self.horizontalMigration); |
|
make.centerY.mas_equalTo(self.mas_centerY); |
|
make.height.mas_equalTo(self.mas_height); |
|
make.left.mas_equalTo(self.buttonTitleLabel.mas_left); |
|
make.right.mas_equalTo(self.buttonTitleLabel.mas_right); |
|
}]; |
|
[self.buttonTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.top.mas_equalTo(0); |
|
make.centerX.mas_equalTo(self.mas_centerX); |
|
make.width.mas_equalTo([TFViewHelper getDynamicWidthWithLabel:self.buttonTitleLabel] > self.width?self.width:[TFViewHelper getDynamicWidthWithLabel:self.buttonTitleLabel]); |
|
make.height.mas_equalTo(self.mas_height); |
|
}]; |
|
} |
|
|
|
if (_buttonSubTitle.length > 0) { |
|
self.buttonSubTitleLabel.text = _buttonSubTitle; |
|
self.buttonSubTitleLabel.textAlignment = NSTextAlignmentRight; |
|
|
|
[self.buttonSubTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(self.buttonTitleLabel.mas_left); |
|
make.bottom.mas_equalTo(self.bottomHoldView.mas_bottom); |
|
make.width.mas_equalTo(self.buttonTitleLabel.mas_width); |
|
make.height.mas_equalTo(self.mas_height).multipliedBy(0.4); |
|
}]; |
|
|
|
[self.buttonTitleLabel mas_updateConstraints:^(MASConstraintMaker *make) { |
|
make.height.mas_equalTo(self.mas_height).multipliedBy(0.6); |
|
}]; |
|
} |
|
} |
|
|
|
// 文字右 图片左 |
|
- (void)createCustomButtonIndicatorTitleRight |
|
{ |
|
if (_buttonImageName.length > 0) { |
|
[self.bottomHoldView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.centerX.mas_equalTo(self.mas_centerX).with.offset(self.horizontalMigration); |
|
make.centerY.mas_equalTo(self.mas_centerY); |
|
make.height.mas_equalTo(self.mas_height); |
|
make.left.mas_equalTo(self.buttonImageView.mas_left); |
|
make.right.mas_equalTo(self.buttonTitleLabel.mas_right); |
|
}]; |
|
[self.buttonImageView mas_remakeConstraints:^(MASConstraintMaker *make) { |
|
make.right.mas_equalTo(self.buttonTitleLabel.mas_left).with.offset(- self.graphicDistance); |
|
make.centerY.mas_equalTo(self.bottomHoldView.mas_centerY); |
|
make.width.height.mas_equalTo([self getButtonImageViewSideLength]); |
|
}]; |
|
|
|
self.buttonTitleLabel.textAlignment = NSTextAlignmentRight; |
|
[self.buttonTitleLabel mas_remakeConstraints:^(MASConstraintMaker *make) { |
|
make.top.mas_equalTo(0); |
|
make.right.mas_equalTo(self.bottomHoldView.mas_right); |
|
make.width.mas_equalTo([TFViewHelper getDynamicWidthWithLabel:self.buttonTitleLabel] > self.width?self.width:[TFViewHelper getDynamicWidthWithLabel:self.buttonTitleLabel]); |
|
make.height.mas_equalTo(self.mas_height).priorityMedium(); |
|
}]; |
|
} else { |
|
[self.bottomHoldView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.centerX.mas_equalTo(self.mas_centerX).with.offset(self.horizontalMigration); |
|
make.centerY.mas_equalTo(self.mas_centerY); |
|
make.height.mas_equalTo(self.mas_height); |
|
make.left.mas_equalTo(self.buttonTitleLabel.mas_left); |
|
make.right.mas_equalTo(self.buttonTitleLabel.mas_right); |
|
}]; |
|
[self.buttonTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.top.mas_equalTo(0); |
|
make.centerX.mas_equalTo(self.mas_centerX); |
|
make.width.mas_equalTo([TFViewHelper getDynamicWidthWithLabel:self.buttonTitleLabel] > self.width?self.width:[TFViewHelper getDynamicWidthWithLabel:self.buttonTitleLabel]); |
|
make.height.mas_equalTo(self.mas_height).priorityMedium(); |
|
}]; |
|
} |
|
|
|
if (_buttonSubTitle.length > 0) { |
|
self.buttonSubTitleLabel.text = _buttonSubTitle; |
|
self.buttonSubTitleLabel.textAlignment = NSTextAlignmentRight; |
|
|
|
[self.buttonSubTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(self.buttonTitleLabel.mas_left); |
|
make.bottom.mas_equalTo(self.bottomHoldView.mas_bottom); |
|
make.width.mas_equalTo([TFViewHelper getDynamicWidthWithLabel:self.buttonSubTitleLabel]); |
|
make.height.mas_equalTo(self.mas_height).multipliedBy(0.4); |
|
}]; |
|
|
|
[self.buttonTitleLabel mas_updateConstraints:^(MASConstraintMaker *make) { |
|
make.height.mas_equalTo(self.mas_height).multipliedBy(0.6); |
|
}]; |
|
} |
|
} |
|
|
|
// 文字上 图片下 |
|
- (void)createCustomButtonIndicatorTitleTop |
|
{ |
|
[self.buttonTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.top.mas_equalTo(0); |
|
make.right.mas_equalTo(self.mas_right); |
|
make.left.mas_equalTo(self.mas_left); |
|
make.bottom.mas_equalTo(self.mas_bottom); |
|
}]; |
|
|
|
if (_buttonImageName.length > 0) { |
|
[self.buttonImageView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.right.mas_equalTo(self.buttonTitleLabel.mas_left); |
|
make.centerY.mas_equalTo(self.mas_centerY); |
|
make.width.height.mas_equalTo([self getButtonImageViewSideLength] / 2); |
|
}]; |
|
|
|
[self.buttonTitleLabel mas_updateConstraints:^(MASConstraintMaker *make) { |
|
make.bottom.mas_equalTo(self.buttonImageView.mas_top); |
|
}]; |
|
} |
|
|
|
if (_buttonSubTitle.length > 0) { |
|
self.buttonSubTitleLabel.text = _buttonSubTitle; |
|
|
|
[self.buttonSubTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(self.buttonTitleLabel.mas_left); |
|
make.top.mas_equalTo(self.mas_centerY); |
|
make.width.mas_equalTo(self.buttonTitleLabel.mas_width); |
|
make.height.mas_equalTo(self.mas_height).multipliedBy(0.5); |
|
}]; |
|
|
|
[self.buttonTitleLabel mas_updateConstraints:^(MASConstraintMaker *make) { |
|
make.height.mas_equalTo(self.mas_height).multipliedBy(0.5); |
|
}]; |
|
} |
|
} |
|
|
|
// 文字下 图片上 |
|
- (void)createCustomButtonIndicatorTitleBottom |
|
{ |
|
[self.bottomHoldView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.edges.mas_equalTo(self); |
|
}]; |
|
|
|
if (_buttonImageName.length > 0) { |
|
[self.buttonImageView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.top.mas_equalTo(self.buttonMargin); |
|
make.centerX.mas_equalTo(self.mas_centerX); |
|
make.width.height.mas_equalTo([self getButtonImageViewSideLength]); |
|
}]; |
|
|
|
self.buttonTitleLabel.textAlignment = NSTextAlignmentCenter; |
|
[self.buttonTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(0); |
|
make.right.mas_equalTo(self.bottomHoldView.mas_right); |
|
make.top.mas_equalTo(self.buttonImageView.mas_bottom).with.offset(self.graphicDistance); |
|
make.bottom.mas_equalTo(self.bottomHoldView.mas_bottom).with.offset(- self.buttonMargin); |
|
}]; |
|
} else { |
|
[self.buttonTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(0); |
|
make.bottom.mas_equalTo(self.bottomHoldView.mas_bottom).with.offset(- self.buttonMargin); |
|
make.width.mas_equalTo([TFViewHelper getDynamicWidthWithLabel:self.buttonTitleLabel] > self.width?self.width:[TFViewHelper getDynamicWidthWithLabel:self.buttonTitleLabel]); |
|
make.height.mas_equalTo(self.mas_height); |
|
}]; |
|
} |
|
} |
|
|
|
// 图片左 文字右 (同时靠左) |
|
- (void)createCustomButtonIndicatorImageLeftBothLeft |
|
{ |
|
self.buttonTitleLabel.textAlignment = NSTextAlignmentLeft; |
|
|
|
if (_buttonImageName.length > 0) { |
|
[self.buttonImageView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(self.mas_left); |
|
make.centerY.mas_equalTo(self.mas_centerY); |
|
make.width.height.mas_equalTo([self getButtonImageViewSideLength]); |
|
}]; |
|
|
|
[self.buttonTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(self.buttonImageView.mas_right).with.offset(self.graphicDistance); |
|
make.right.mas_equalTo(self.mas_right); |
|
make.centerY.mas_equalTo(self.mas_centerY); |
|
make.height.mas_equalTo(self.mas_height); |
|
}]; |
|
} else { |
|
[self.buttonTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.top.mas_equalTo(0); |
|
make.left.mas_equalTo(0); |
|
make.right.mas_equalTo(self.mas_right); |
|
make.height.mas_equalTo(self.mas_height); |
|
}]; |
|
} |
|
|
|
if (_buttonSubTitle.length > 0) { |
|
self.buttonSubTitleLabel.text = _buttonSubTitle; |
|
self.buttonSubTitleLabel.textAlignment = NSTextAlignmentRight; |
|
|
|
[self.buttonSubTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(self.buttonTitleLabel.mas_left); |
|
make.top.mas_equalTo(self.mas_centerY); |
|
make.width.mas_equalTo(self.buttonTitleLabel.mas_width); |
|
make.height.mas_equalTo(self.mas_height).multipliedBy(0.4); |
|
}]; |
|
|
|
[self.buttonTitleLabel mas_updateConstraints:^(MASConstraintMaker *make) { |
|
make.height.mas_equalTo(self.mas_height).multipliedBy(0.6); |
|
}]; |
|
} |
|
} |
|
|
|
// 图片左 文字右 (同时靠右) |
|
- (void)createCustomButtonIndicatorImageLeftBothRight |
|
{ |
|
[self.buttonTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.top.mas_equalTo(0); |
|
make.right.mas_equalTo(self.mas_right); |
|
make.left.mas_equalTo(self.mas_left); |
|
make.height.mas_equalTo(self.mas_height); |
|
}]; |
|
|
|
if (_buttonImageName.length > 0) { |
|
[self.buttonImageView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(self.mas_left); |
|
make.centerY.mas_equalTo(self.mas_centerY); |
|
make.width.height.mas_equalTo([self getButtonImageViewSideLength]); |
|
}]; |
|
|
|
self.buttonTitleLabel.textAlignment = NSTextAlignmentLeft; |
|
[self.buttonTitleLabel mas_updateConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(self.buttonImageView.mas_right).with.offset(self.graphicDistance); |
|
}]; |
|
} |
|
|
|
if (_buttonSubTitle.length > 0) { |
|
self.buttonSubTitleLabel.text = _buttonSubTitle; |
|
self.buttonSubTitleLabel.textAlignment = NSTextAlignmentLeft; |
|
[self.buttonSubTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(self.buttonTitleLabel.mas_left); |
|
make.top.mas_equalTo(self.mas_centerY); |
|
make.width.mas_equalTo(self.buttonTitleLabel.mas_width); |
|
make.height.mas_equalTo(self.mas_height).multipliedBy(0.4); |
|
}]; |
|
|
|
[self.buttonTitleLabel mas_updateConstraints:^(MASConstraintMaker *make) { |
|
make.height.mas_equalTo(self.mas_height).multipliedBy(0.6); |
|
}]; |
|
} |
|
} |
|
|
|
// 文字左 图片右 (同时靠左) |
|
- (void)createCustomButtonIndicatorImageRightBothLeft |
|
{ |
|
[self.buttonTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.top.mas_equalTo(0); |
|
make.left.mas_equalTo(0); |
|
make.right.mas_equalTo(self.mas_right); |
|
make.height.mas_equalTo(self.mas_height); |
|
}]; |
|
|
|
if (_buttonImageName.length > 0) { |
|
[self.buttonImageView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(self.buttonTitleLabel.mas_right).with.offset(self.graphicDistance); |
|
make.centerY.mas_equalTo(self.mas_centerY); |
|
make.width.height.mas_equalTo([self getButtonImageViewSideLength]); |
|
}]; |
|
|
|
self.buttonTitleLabel.textAlignment = NSTextAlignmentRight; |
|
[self.buttonTitleLabel mas_updateConstraints:^(MASConstraintMaker *make) { |
|
make.right.mas_equalTo(self.mas_right).with.offset(- self.width / 2 + self.graphicDistance / 2); |
|
}]; |
|
} |
|
|
|
if (_buttonSubTitle.length > 0) { |
|
self.buttonSubTitleLabel.text = _buttonSubTitle; |
|
self.buttonSubTitleLabel.textAlignment = NSTextAlignmentRight; |
|
|
|
[self.buttonSubTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(self.buttonTitleLabel.mas_left); |
|
make.top.mas_equalTo(self.mas_centerY); |
|
make.width.mas_equalTo(self.buttonTitleLabel.mas_width); |
|
make.height.mas_equalTo(self.mas_height).multipliedBy(0.4); |
|
}]; |
|
|
|
[self.buttonTitleLabel mas_updateConstraints:^(MASConstraintMaker *make) { |
|
make.height.mas_equalTo(self.mas_height).multipliedBy(0.6); |
|
}]; |
|
} |
|
} |
|
|
|
// 文字左 图片右 (同时靠右) |
|
- (void)createCustomButtonIndicatorImageRightBothRight |
|
{ |
|
self.buttonTitleLabel.textAlignment = NSTextAlignmentRight; |
|
|
|
if (_buttonImageName.length > 0) { |
|
[self.buttonImageView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.right.mas_equalTo(self.mas_right); |
|
make.centerY.mas_equalTo(self.mas_centerY); |
|
make.width.height.mas_equalTo([self getButtonImageViewSideLength]); |
|
}]; |
|
|
|
[self.buttonTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.top.mas_equalTo(0); |
|
make.left.mas_equalTo(0); |
|
make.right.mas_equalTo(self.buttonImageView.mas_left).with.offset(- self.graphicDistance); |
|
make.height.mas_equalTo(self.mas_height); |
|
}]; |
|
} else { |
|
[self.buttonTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.top.mas_equalTo(0); |
|
make.left.mas_equalTo(0); |
|
make.right.mas_equalTo(self.mas_right); |
|
make.height.mas_equalTo(self.mas_height); |
|
}]; |
|
} |
|
|
|
if (_buttonSubTitle.length > 0) { |
|
self.buttonSubTitleLabel.text = _buttonSubTitle; |
|
self.buttonSubTitleLabel.textAlignment = NSTextAlignmentRight; |
|
|
|
[self.buttonSubTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.mas_equalTo(self.buttonTitleLabel.mas_left); |
|
make.top.mas_equalTo(self.mas_centerY); |
|
make.width.mas_equalTo(self.buttonTitleLabel.mas_width); |
|
make.height.mas_equalTo(self.mas_height).multipliedBy(0.4); |
|
}]; |
|
|
|
[self.buttonTitleLabel mas_updateConstraints:^(MASConstraintMaker *make) { |
|
make.height.mas_equalTo(self.mas_height).multipliedBy(0.6); |
|
}]; |
|
} |
|
} |
|
|
|
#pragma mark - 变量设置 |
|
- (void)setButtonTitle:(NSString *)buttonTitle |
|
{ |
|
_buttonTitle = buttonTitle; |
|
self.buttonTitleLabel.text = buttonTitle; |
|
} |
|
|
|
- (void)setButtonSubTitle:(NSString *)buttonSubTitle |
|
{ |
|
_buttonSubTitle = buttonSubTitle; |
|
self.buttonSubTitleLabel.text = buttonSubTitle; |
|
} |
|
|
|
- (void)setButtonTitleFont:(UIFont *)buttonTitleFont |
|
{ |
|
_buttonTitleFont = buttonTitleFont; |
|
self.buttonTitleLabel.font = buttonTitleFont; |
|
} |
|
|
|
- (void)setButtonSubTitleFont:(UIFont *)buttonSubTitleFont |
|
{ |
|
_buttonSubTitleFont = buttonSubTitleFont; |
|
self.buttonSubTitleLabel.font = buttonSubTitleFont; |
|
} |
|
|
|
|
|
- (void)setButtonTitleColor:(UIColor *)buttonTitleColor |
|
{ |
|
_buttonTitleColor = buttonTitleColor; |
|
self.buttonTitleLabel.textColor = buttonTitleColor; |
|
} |
|
|
|
- (void)setButtonSubTitleColor:(UIColor *)buttonSubTitleColor |
|
{ |
|
_buttonSubTitleColor = buttonSubTitleColor; |
|
self.buttonSubTitleLabel.textColor = buttonSubTitleColor; |
|
} |
|
|
|
- (void)setButtonTintColor:(UIColor *)buttonTintColor |
|
{ |
|
_buttonTintColor = buttonTintColor; |
|
self.buttonTitleLabel.textColor = buttonTintColor; |
|
self.buttonSubTitleLabel.textColor = buttonTintColor; |
|
_buttonImageView.image = [_buttonImageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; |
|
self.buttonImageView.tintColor = buttonTintColor; |
|
} |
|
|
|
|
|
- (void)setButtonImageName:(NSString *)buttonImageName |
|
{ |
|
_buttonImageName = buttonImageName; |
|
_buttonImageView.image = [[UIImage imageNamed:buttonImageName] imageWithRenderingMode:UIImageRenderingModeAutomatic]; |
|
} |
|
|
|
|
|
- (void)setButtonImageViewWidth:(NSInteger)buttonImageViewWidth |
|
{ |
|
_buttonImageViewWidth = buttonImageViewWidth; |
|
|
|
[self.buttonImageView mas_updateConstraints:^(MASConstraintMaker *make) { |
|
make.width.equalTo(@(buttonImageViewWidth)).priorityHigh(); |
|
}]; |
|
} |
|
|
|
- (void)setButtonImageViewHeight:(NSInteger)buttonImageViewHeight |
|
{ |
|
_buttonImageViewHeight = buttonImageViewHeight; |
|
|
|
[self.buttonImageView mas_updateConstraints:^(MASConstraintMaker *make) { |
|
make.height.equalTo(@(buttonImageViewHeight)).with.priorityHigh(); |
|
}]; |
|
} |
|
|
|
- (void)setHorizontalMigration:(CGFloat)horizontalMigration |
|
{ |
|
_horizontalMigration = horizontalMigration; |
|
} |
|
|
|
- (void)setButtonImageScale:(CGFloat)buttonImageScale |
|
{ |
|
if (buttonImageScale > 1) { |
|
buttonImageScale = 1; |
|
} |
|
|
|
if (buttonImageScale < 0) { |
|
buttonImageScale = 0; |
|
} |
|
|
|
_buttonImageScale = buttonImageScale; |
|
} |
|
|
|
- (void)setGraphicDistance:(NSInteger)graphicDistance |
|
{ |
|
_graphicDistance = graphicDistance; |
|
} |
|
|
|
|
|
|
|
- (void)setCornerBackColor:(UIColor *)cornerBackColor |
|
{ |
|
_cornerBackColor = cornerBackColor; |
|
self.cornerMarkLabel.backgroundColor = cornerBackColor; |
|
} |
|
|
|
- (void)setCornerTextColor:(UIColor *)cornerTextColor |
|
{ |
|
_cornerTextColor = cornerTextColor; |
|
self.cornerMarkLabel.textColor = cornerTextColor; |
|
} |
|
|
|
- (void)setCornerTitle:(NSString *)cornerTitle |
|
{ |
|
_cornerTitle = cornerTitle; |
|
self.cornerMarkLabel.hidden = (cornerTitle.length == 0); |
|
self.cornerMarkLabel.text = cornerTitle; |
|
self.cornerMarkLabel.layer.cornerRadius = (self.getButtonImageViewSideLength / 2) / 2; |
|
|
|
[self.cornerMarkLabel mas_updateConstraints:^(MASConstraintMaker *make) { |
|
make.height.mas_equalTo(self.getButtonImageViewSideLength / 2); |
|
make.width.mas_equalTo([TFViewHelper getDynamicWidthWithLabel:self.cornerMarkLabel]); |
|
}]; |
|
} |
|
|
|
- (void)setCornerTextFont:(UIFont *)cornerTextFont |
|
{ |
|
_cornerTextFont = cornerTextFont; |
|
self.cornerMarkLabel.font = cornerTextFont; |
|
} |
|
|
|
|
|
|
|
// 是否翻转图片 |
|
- (void)setTransformImageView:(BOOL)transformImageView |
|
{ |
|
_transformImageView = transformImageView; |
|
if (transformImageView) { |
|
self.buttonImageView.transform = CGAffineTransformMakeRotation(M_PI); |
|
} |
|
} |
|
|
|
- (void)setButtonTitleNumberOfLines:(NSInteger)buttonTitleNumberOfLines |
|
{ |
|
_buttonTitleNumberOfLines = buttonTitleNumberOfLines; |
|
self.buttonTitleLabel.numberOfLines = buttonTitleNumberOfLines; |
|
} |
|
|
|
static CFAbsoluteTime startTime; |
|
- (void)startSpin { |
|
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; |
|
animation.fromValue = @(0.0f); |
|
animation.toValue = @(M_PI * 2.0); |
|
animation.duration = 0.8; |
|
animation.autoreverses = NO; |
|
animation.fillMode = kCAFillModeForwards; |
|
animation.repeatCount = MAXFLOAT; |
|
[self.buttonImageView.layer addAnimation:animation forKey:@"spin"]; |
|
startTime = CFAbsoluteTimeGetCurrent(); |
|
} |
|
|
|
- (void)stopSpin |
|
{ |
|
CFAbsoluteTime currentTime = CFAbsoluteTimeGetCurrent(); |
|
CFTimeInterval inteval = currentTime * 1000.0 - startTime * 1000.0; |
|
|
|
if (inteval < 1000.0) { |
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ |
|
[self.buttonImageView.layer removeAnimationForKey:@"spin"]; |
|
}); |
|
} else { |
|
[self.buttonImageView.layer removeAnimationForKey:@"spin"]; |
|
} |
|
} |
|
|
|
#pragma mark - LazyLoad |
|
- (UIView *)bottomHoldView |
|
{ |
|
if (!_bottomHoldView) { |
|
_bottomHoldView = [[UIView alloc] init]; |
|
_bottomHoldView.backgroundColor = [UIColor clearColor]; |
|
_bottomHoldView.userInteractionEnabled = NO; |
|
} |
|
return _bottomHoldView; |
|
} |
|
|
|
- (UIImageView *)buttonImageView |
|
{ |
|
if (!_buttonImageView) { |
|
_buttonImageView = [[UIImageView alloc] init]; |
|
} |
|
return _buttonImageView; |
|
} |
|
|
|
- (UILabel *)cornerMarkLabel |
|
{ |
|
if (!_cornerMarkLabel) { |
|
_cornerMarkLabel = [[UILabel alloc] init]; |
|
_cornerMarkLabel.textAlignment = NSTextAlignmentCenter; |
|
_cornerMarkLabel.backgroundColor = kRedColor; |
|
_cornerMarkLabel.font = kFont6; |
|
_cornerMarkLabel.textColor = kWhiteColor; |
|
_cornerMarkLabel.clipsToBounds = YES; |
|
} |
|
return _cornerMarkLabel; |
|
} |
|
|
|
- (UILabel *)buttonTitleLabel |
|
{ |
|
if (!_buttonTitleLabel) { |
|
_buttonTitleLabel = [[UILabel alloc] init]; |
|
_buttonTitleLabel.numberOfLines = 1; |
|
_buttonTitleLabel.font = kFont12; |
|
_buttonTitleLabel.textColor = kBlackColor; |
|
_buttonTitleLabel.textAlignment = NSTextAlignmentCenter; |
|
} |
|
return _buttonTitleLabel; |
|
} |
|
|
|
- (UILabel *)buttonSubTitleLabel |
|
{ |
|
if (!_buttonSubTitleLabel) { |
|
_buttonSubTitleLabel = [[UILabel alloc] init]; |
|
_buttonSubTitleLabel.numberOfLines = 1; |
|
_buttonSubTitleLabel.font = kFont10; |
|
_buttonSubTitleLabel.textColor = kGrayTextColor; |
|
_buttonSubTitleLabel.textAlignment = NSTextAlignmentCenter; |
|
} |
|
return _buttonSubTitleLabel; |
|
} |
|
|
|
- (UIView *)maskView |
|
{ |
|
if (!_maskView) { |
|
_maskView = [[UIView alloc] init]; |
|
_maskView.frame = self.frame; |
|
_maskView.backgroundColor = kGrayViewColor; |
|
} |
|
return _maskView; |
|
} |
|
|
|
@end
|
|
|