LWCheckBoxView.m 3.2 KB
Newer Older
杨时权 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
#import <Foundation/Foundation.h>
#import "LWCheckBoxView.h"
#import "LWCheckBoxButton.h"

@interface LWCheckBoxItem ()
@end

@implementation LWCheckBoxItem

- (instancetype)initWithName:(NSString*)name {
    if (self = [super init]) {
        self.checkBoxName = name;
    }
    return self;
}

@end

@interface LWCheckBoxView () <LWCheckBoxButtonDelegate>
@property (strong, nonatomic) NSArray<LWCheckBoxItem*>* items;
@property (strong, nonatomic) NSMutableArray<LWCheckBoxButton*>* btnItems;
@property (strong, nonatomic) NSMutableArray<UILabel*>* labelItems;

@property (strong, nonatomic) UIImage* btnSelectedImage;
@property (strong, nonatomic) UIImage* btnNoSelectImage;
@end

@implementation LWCheckBoxView

- (instancetype)initWithItems:(NSArray<LWCheckBoxItem*>*)items {
    if (self = [self init]) {
        self.items = items;
        self.btnItems = [[NSMutableArray alloc] init];
        self.labelItems = [[NSMutableArray alloc] init];
        
        self.btnSelectedImage = [UIImage imageNamed:@"select"];
        self.btnNoSelectImage = [UIImage imageNamed:@"noselect"];
        [self updateView];
        [self onBtnSelected:0];
    }
    return self;
}

- (void)updateView {
    int checkBoxItemX = 0;
    int checkBoxItemY = 0;
    int labelItemX = 30;
    int labelItemY = 0;
    for (int i = 0; i < self.btnItems.count; ++i) {
        [self.btnItems[i] removeFromSuperview];
        [self.labelItems[i] removeFromSuperview];
    }
    
    for (int i = 0; i < self.items.count; ++i) {
        if (self.btnItems.count <= i) {
            [self.btnItems addObject:[[LWCheckBoxButton alloc] init]];
            self.btnItems[i].contentMode = UIViewContentModeScaleAspectFit;
            self.btnItems[i].delegate = self;
杨时权 已提交
59
            self.btnItems[i].tag = i;
杨时权 已提交
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
            
            [self.labelItems addObject:[[UILabel alloc] init]];
        }
        
        self.btnItems[i].image = [self.btnNoSelectImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        self.btnItems[i].frame = CGRectMake(checkBoxItemX, checkBoxItemY, 30, 30);
        
        self.labelItems[i].text = self.items[i].checkBoxName;
        self.labelItems[i].textColor = [UIColor blackColor];
        self.labelItems[i].backgroundColor = [UIColor whiteColor];
        self.labelItems[i].frame = CGRectMake(labelItemX, labelItemY, 60, 30);
        [self addSubview:self.btnItems[i]];
        [self addSubview:self.labelItems[i]];
        
        if (self.displayType == kLWCheckBoxViewDisplayType_LR) {
            checkBoxItemX += 90;
            labelItemX += 90;
        } else {
            checkBoxItemY += 30;
            labelItemY += 30;
        }
    }
}

#pragma mark LWCheckBoxButtonDelegate
- (void)onBtnSelected:(int)index {
    // 当前选择的取消图片显示
    self.btnItems[self.selectIndex].image = [self.btnNoSelectImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    
    // 新的选择图片显示
    self.btnItems[index].image = [self.btnSelectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    
    self.selectIndex = index;
    self.selectItem = self.items[index];
    
    if (self.delegate && [self.delegate respondsToSelector:@selector(onSelect:item:)]) {
杨时权 已提交
96
        [self.delegate onSelect:index item:self.selectItem];
杨时权 已提交
97 98 99 100
    }
}

@end