#import #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 () @property (strong, nonatomic) NSArray* items; @property (strong, nonatomic) NSMutableArray* btnItems; @property (strong, nonatomic) NSMutableArray* labelItems; @property (strong, nonatomic) UIImage* btnSelectedImage; @property (strong, nonatomic) UIImage* btnNoSelectImage; @end @implementation LWCheckBoxView - (instancetype)initWithItems:(NSArray*)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; self.btnItems[i].tag = i; [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:)]) { [self.delegate onSelect:index item:self.selectItem]; } } @end