// // FKSelectSpecContentView.m // FirstLink // // Created by jack on 16/1/18. // Copyright © 2016年 FirstLink. All rights reserved. // #import "FKSelectSpecContentView.h" #import "FKSelectSpecUnitView.h" #import "FKProductSpecItem.h" #import "FKBasicSpecItem.h" #import "FKSelectAlertView.h" #define kUnitViewTagBase 88 @interface FKSelectSpecContentView () @property (nonatomic, strong) NSArray *specItemArray; @property (nonatomic, strong) UIScrollView *scrollView; @property (nonatomic, strong) FKSelectAlertView *alertView; @end @implementation FKSelectSpecContentView - (instancetype)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { [self addAllSubviews]; self.backgroundColor = UIColorFromRGB(0xf4f4f4); } return self; } - (void)buildForSpecItemArray:(NSArray *)specItemArray showSize:(BOOL)showSize{ self.specItemArray = specItemArray; [self.scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; if (self.specItemArray.count == 0) return; UIView *uperUnitView = nil; for (int i = 0; i < self.specItemArray.count; i++) { FKProductSpecItem *specItem = self.specItemArray[i]; FKSelectSpecUnitView *unitView = [[FKSelectSpecUnitView alloc]init]; unitView.tag = kUnitViewTagBase + i; unitView.showSizeIcon = (i == 0 ? showSize : NO); unitView.delegate = self; CGFloat height = [FKSelectSpecUnitView contentHeightForSpecItem:specItem]; [self.scrollView addSubview:unitView]; [unitView mas_makeConstraints:^(MASConstraintMaker *make) { if (i == 0){ make.top.equalTo(self.scrollView); make.width.equalTo(self.scrollView); }else{ make.top.equalTo(uperUnitView.mas_bottom); } make.left.right.equalTo(self.scrollView); make.height.mas_equalTo(height); }]; [unitView setContentForSpecItem:specItem]; uperUnitView = unitView; } [self.scrollView addSubview:self.amountView]; self.amountView.amountLabel.text = @"1"; [self.amountView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(uperUnitView.mas_bottom).offset(5); make.left.right.equalTo(self.scrollView); make.height.mas_equalTo(30); }]; [self.scrollView addSubview:self.alertView]; [self.alertView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.amountView.mas_bottom).offset(20); make.left.right.equalTo(self.scrollView); make.height.mas_equalTo(44); make.bottom.equalTo(self.scrollView).offset(-60); }]; } - (void)addAllSubviews{ [self addSubview:self.scrollView]; [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.insets(UIEdgeInsetsMake(0, 0, 0, 0)); }]; } - (void)reloadContent{ for (int i = 0; i < self.specItemArray.count; i++) { FKSelectSpecUnitView *unitView = [self.scrollView viewWithTag:kUnitViewTagBase + i]; if ([unitView isKindOfClass:[FKSelectSpecUnitView class]]) [unitView reloadContent]; } } - (NSUInteger)selectedAmount{ return self.amountView.amountLabel.text.integerValue; } #pragma mark unitView delegate - (void)unitView:(FKSelectSpecUnitView *)unitView basicSpecIndex:(NSUInteger)basicSpecIndex selected:(BOOL)selected{ NSString *selectPicUrl = unitView.specItem.selectedPicUrl; if (selectPicUrl){ [self clearAllSpecPicUrl]; unitView.specItem.selectedPicUrl = selectPicUrl; } if ([self.delegate respondsToSelector:@selector(didChangeSpecState:)]){ [self.delegate didChangeSpecState:self]; } } - (void)showSizePic{ // 查看尺码表 if ([self.delegate respondsToSelector:@selector(clickShowSizeBtn)]){ [self.delegate clickShowSizeBtn]; } } - (void)showSizeLink { if ([self.delegate respondsToSelector:@selector(clickShowSizeLinkBtn)]){ [self.delegate clickShowSizeLinkBtn]; } } - (void)clearAllSpecPicUrl{ for (FKProductSpecItem *specItem in self.specItemArray) { specItem.selectedPicUrl = nil; } } - (FKProductSpecItem *)specItemAtIndex:(NSInteger)index{ if (index >= 0 && index < self.specItemArray.count) { return self.specItemArray[index]; } return nil; } #pragma mark - action #pragma mark - property - (UIScrollView *)scrollView{ if (_scrollView == nil) { _scrollView = [[UIScrollView alloc]init]; _scrollView.backgroundColor = [UIColor whiteColor]; _scrollView.showsHorizontalScrollIndicator = NO; _scrollView.showsVerticalScrollIndicator = NO; _scrollView.bounces = NO; } return _scrollView; } - (FKSelectAlertView *)alertView{ if (_alertView == nil) { _alertView = [[FKSelectAlertView alloc]init]; } return _alertView; } - (FKSelectSpecAmountView *)amountView{ if (_amountView == nil) { _amountView = [[FKSelectSpecAmountView alloc]init]; } return _amountView; } @end