// // ZKButton.h // 防水 // // 2019年9月15日に、HELLO WORLDによって作成されます。 // 著作権©2019年防水。全著作権所有。 // の#import <UIKitの/ UIKit.h> のtypedef NS_ENUM(NSInteger、ZKButtonType){ ZKButtonTypeLeftAndRight = 0、// 左右结构 ZKButtonTypeTopAndBottom = 0、// 上下结构 }。 NS_ASSUME_NONNULL_BEGIN @interface ZKButton:UIButtonの @property(非アトミック、割り当てる)ZKButtonType型; @property(アトミック、強い)NSStringの *left_top_SelectImg; @property(アトミック、強い)NSStringの * left_top_DefaultImg。 @property(アトミック、強い)NSStringの * left_top_SelectTitle。 @property(アトミック、強い)NSStringの * left_top_DefaultTitle。 @property(アトミック、強い)NSStringの * right_bottom_SelectImg。 @property(アトミック、強い)NSStringの * right_bottom_DefaultImg。 @property(アトミック、強い)NSStringの * right_bottom_SelectTitle。 @property(アトミック、強い)NSStringの * right_bottom_DefaultTitle。 @property(非アトミック、割り当てる)BOOL isSelect。 @property(アトミック、強い)UIButton* left_top; // 左上 @property(アトミック、強い)UIButton * right_bottom。// 右下 @property(アトミック、コピー)、ボイド(^ selectBlock)(BOOL isSelect、NSInteger selectIndex)。 @end NS_ASSUME_NONNULL_END
// // ZKButton.m // 防水 // // 2019年9月15日に、HELLO WORLDによって作成されます。 // 著作権©2019年防水。全著作権所有。 // #importを " ZKButton.h " の#define ZKWeakSelf __weak typeof演算(自己)weakSelf =自己; @interface ZKButton()@end @implementation ZKButton - (instancetype)INIT { 場合(自己= [スーパーINIT]){ _left_top = [UIButton buttonWithType:UIButtonTypeCustom]。 [addTarget _left_top:自己アクション:@selector(btnClick :) forControlEvents:UIControlEventTouchUpInside]。 [自己addSubview:_left_top]。 _right_bottom = [UIButton buttonWithType:UIButtonTypeCustom]。 [_right_bottom addTarget:自己アクション:@selector(btnClick :) forControlEvents:UIControlEventTouchUpInside]。 _right_bottom.userInteractionEnabled = YES。 _right_bottom.imageView.userInteractionEnabled = YES。 [自己addSubview:_right_bottom]。 } 戻り自己。 } - (ボイド)はsetType(ZKButtonType){型 _type = タイプ; ZKWeakSelf スイッチ(_type){ ケース 0: { // 左右结构 [_left_top mas_makeConstraints:^(MASConstraintMaker * メイク){ make.centerY.mas_equalTo(自己); make.left.equalTo(self.mas_left).offset(5 )。 }]。 [_right_bottom mas_makeConstraints: ^(MASConstraintMaker * メイク){ make.centerY.mas_equalTo(自己)。 make.left.equalTo(weakSelf.left_top.mas_right).with.offset(5 )。 make.right.equalTo(self.mas_right).offset( - 5); }]。 } ブレーク; )。ケース 1 : { // 上下结构 [_left_top mas_makeConstraints:^(MASConstraintMaker * メイク){ make.centerX.mas_equalTo(自己)。 make.top.equalTo(self.mas_top).offset(5 )。 }]。 [_right_bottom mas_makeConstraints: ^(MASConstraintMaker * メイク){ make.centerX.mas_equalTo(自己)。 make.top.equalTo(weakSelf.left_top.mas_bottom).with.offset(5 make.bottom.equalTo(self.mas_bottom).offset( - 5 ); }]; } ブレーク; デフォルト: 休憩; } } の#pragma -マーク- left_top - (ボイド)setLeft_top_DefaultImg:(NSStringの* )left_top_DefaultImg { _left_top_DefaultImg = left_top_DefaultImg。 [_left_top setImage:[UIImage imageNamed:_left_top_DefaultImg] forState:UIControlStateNormal]。 } - (ボイド)setLeft_top_SelectImg:(NSStringの* )left_top_SelectImg { _left_top_SelectImg = - (left_top_SelectImg; [_left_top setImage:[UIImage imageNamed:_left_top_SelectImg] forState:UIControlStateSelected]。 } ボイド)setLeft_top_DefaultTitle:(NSStringの* )left_top_DefaultTitle { _left_top_DefaultTitle = left_top_DefaultTitle。 [_left_top setTitleColor:ColorHex_666666 forState:UIControlStateNormal]。 [_left_topのsetTitle:_left_top_DefaultTitle forState:UIControlStateNormal]。 } - (ボイド)setLeft_top_SelectTitle:(NSStringの* )left_top_SelectTitle { _left_top_SelectTitle = left_top_SelectTitle。 [_left_top setTitleColor:ColorHex_666666 forState:UIControlStateSelected]。 [_left_topのsetTitle:_left_top_SelectTitle forState:UIControlStateSelected]。 } の#pragma -マーク- right_bottom - (ボイド)setRight_bottom_DefaultImg:(NSStringの*)right_bottom_DefaultImg { _right_bottom_DefaultImg = right_bottom_DefaultImg。 [_right_bottom setImage:[UIImage imageNamed:_right_bottom_DefaultImg] forState:UIControlStateNormal]。 } - (ボイド)setRight_bottom_SelectImg:(NSStringの* )right_bottom_SelectImg { _right_bottom_SelectImg = right_bottom_SelectImg。 [_right_bottom setImage:[UIImage imageNamed:_right_bottom_SelectImg] forState:UIControlStateSelected]。 } - (無効)setRight_bottom_DefaultTitle:(NSStringの* )right_bottom_DefaultTitle { _right_bottom_DefaultTitle = right_bottom_DefaultTitle。 [_right_bottom setTitleColor:ColorHex_666666 forState:UIControlStateNormal]。 [_right_bottomのsetTitle:_right_bottom_DefaultTitle forState:UIControlStateNormal]。 } - (ボイド)setRight_bottom_SelectTitle:(NSStringの* )right_bottom_SelectTitle { _right_bottom_SelectTitle = right_bottom_SelectTitle。 [_right_bottom setTitleColor:ColorHex_666666 forState:UIControlStateSelected]。 [_right_bottomのsetTitle:_right_bottom_SelectTitle forState:UIControlStateSelected]。 } - (無効)setIsSelect:(BOOL)isSelect { _isSelect = isSelect。 _left_top.selected = _isSelect。 _right_bottom.selected = _isSelect; } - (ボイド)btnClick:(UIButton * )BTN { // self.isSelect = self.isSelect ;! // ポスト拡張適切な選択を有する多機能 IF (self.selectBlock){ self.selectBlock(YES、self.tag); } } @end
- (ボイド)createSelectButton { _buttonArray = [NSMutableArrayのアレイ]; ZKButton * tempBtn = nilを; WPWeakSelfが ため(int型 i = 0 ; iは< 4 ; I ++ ){ ZKButton *ボタン= [[ZKButtonのALLOC] INIT]。 button.selectBlock = ^ (BOOL isSelect、NSInteger selectIndex){ [weakSelf.buttonArray enumerateObjectsUsingBlock: ^(識別 OBJ、NSUIntegerのIDX、BOOL * ストップ){ ZKButton *ボタン=(ZKButton * )OBJ。 button.isSelect =(button.tag == selectIndex)?はい・いいえ; }]。 }。 // button.hidden = YES; button.tag =私は+ 100 。 button.left_top_DefaultImg = @ " hire_line_default " 。 button.left_top_SelectImg = @ " hire_line_select " 。 [ボタンaddTarget:自己アクション:@selector(buttonClick :) forControlEvents:UIControlEventTouchUpInside]。 button.type = ZKButtonTypeLeftAndRight。 [self.btnView addSubview:ボタン]。 もし(私は== 0){ button.isSelect = YES。 [ボタンmas_makeConstraints: ^(MASConstraintMaker * メイク){ make.left.equalTo(_btnView.mas_left).offset(10 )。 // make.size.mas_equalTo(CGSizeMake(20、20))。 make.centerY.equalTo(_btnView.mas_centerY)。 }]。 } 他{ button.isSelect = NO。 [ボタンmas_makeConstraints: ^(MASConstraintMaker * メイク){ make.left.equalTo(tempBtn.mas_right).offset(10 )。 // make.size.mas_equalTo(CGSizeMake(20、20))。 make.centerY.equalTo(_btnView.mas_centerY)。 }]。 } tempBtn = ボタン。 [_buttonArrayのaddObject:ボタン]。 } } - (ボイド)buttonClick:(ZKButton * )差出人 { [_buttonArray enumerateObjectsUsingBlock: ^(識別 OBJ、NSUIntegerのIDX、BOOL * ストップ){ ZKButton *ボタン=(ZKButton * )OBJ。 button.isSelect = NO; }]。 sender.isSelect = YES; }