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

//
// 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