ZKButton

// 
//   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.h
// 
//   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
ZKButton.m
- (ボイド)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; 
}
createSelectButton

 

おすすめ

転載: www.cnblogs.com/kingstudy/p/11525366.html