Nenhuma Descrição

FKSelectSpecContentView.m 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. //
  2. // FKSelectSpecContentView.m
  3. // FirstLink
  4. //
  5. // Created by jack on 16/1/18.
  6. // Copyright © 2016年 FirstLink. All rights reserved.
  7. //
  8. #import "FKSelectSpecContentView.h"
  9. #import "FKSelectSpecUnitView.h"
  10. #import "FKProductSpecItem.h"
  11. #import "FKBasicSpecItem.h"
  12. #import "FKSelectAlertView.h"
  13. #define kUnitViewTagBase 88
  14. @interface FKSelectSpecContentView () <FKSelectSpecUnitViewDelegate>
  15. @property (nonatomic, strong) NSArray *specItemArray;
  16. @property (nonatomic, strong) UIScrollView *scrollView;
  17. @property (nonatomic, strong) FKSelectAlertView *alertView;
  18. @end
  19. @implementation FKSelectSpecContentView
  20. - (instancetype)initWithFrame:(CGRect)frame{
  21. if (self = [super initWithFrame:frame]) {
  22. [self addAllSubviews];
  23. self.backgroundColor = UIColorFromRGB(0xf4f4f4);
  24. }
  25. return self;
  26. }
  27. - (void)buildForSpecItemArray:(NSArray *)specItemArray showSize:(BOOL)showSize{
  28. self.specItemArray = specItemArray;
  29. [self.scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
  30. if (self.specItemArray.count == 0) return;
  31. UIView *uperUnitView = nil;
  32. for (int i = 0; i < self.specItemArray.count; i++) {
  33. FKProductSpecItem *specItem = self.specItemArray[i];
  34. FKSelectSpecUnitView *unitView = [[FKSelectSpecUnitView alloc]init];
  35. unitView.tag = kUnitViewTagBase + i;
  36. unitView.showSizeIcon = (i == 0 ? showSize : NO);
  37. unitView.delegate = self;
  38. CGFloat height = [FKSelectSpecUnitView contentHeightForSpecItem:specItem];
  39. [self.scrollView addSubview:unitView];
  40. [unitView mas_makeConstraints:^(MASConstraintMaker *make) {
  41. if (i == 0){
  42. make.top.equalTo(self.scrollView);
  43. make.width.equalTo(self.scrollView);
  44. }else{
  45. make.top.equalTo(uperUnitView.mas_bottom);
  46. }
  47. make.left.right.equalTo(self.scrollView);
  48. make.height.mas_equalTo(height);
  49. }];
  50. [unitView setContentForSpecItem:specItem];
  51. uperUnitView = unitView;
  52. }
  53. [self.scrollView addSubview:self.amountView];
  54. self.amountView.amountLabel.text = @"1";
  55. [self.amountView mas_makeConstraints:^(MASConstraintMaker *make) {
  56. make.top.equalTo(uperUnitView.mas_bottom).offset(5);
  57. make.left.right.equalTo(self.scrollView);
  58. make.height.mas_equalTo(30);
  59. }];
  60. [self.scrollView addSubview:self.alertView];
  61. [self.alertView mas_makeConstraints:^(MASConstraintMaker *make) {
  62. make.top.equalTo(self.amountView.mas_bottom).offset(20);
  63. make.left.right.equalTo(self.scrollView);
  64. make.height.mas_equalTo(44);
  65. make.bottom.equalTo(self.scrollView).offset(-60);
  66. }];
  67. }
  68. - (void)addAllSubviews{
  69. [self addSubview:self.scrollView];
  70. [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
  71. make.edges.insets(UIEdgeInsetsMake(0, 0, 0, 0));
  72. }];
  73. }
  74. - (void)reloadContent{
  75. for (int i = 0; i < self.specItemArray.count; i++) {
  76. FKSelectSpecUnitView *unitView = [self.scrollView viewWithTag:kUnitViewTagBase + i];
  77. if ([unitView isKindOfClass:[FKSelectSpecUnitView class]]) [unitView reloadContent];
  78. }
  79. }
  80. - (NSUInteger)selectedAmount{
  81. return self.amountView.amountLabel.text.integerValue;
  82. }
  83. #pragma mark unitView delegate
  84. - (void)unitView:(FKSelectSpecUnitView *)unitView
  85. basicSpecIndex:(NSUInteger)basicSpecIndex
  86. selected:(BOOL)selected{
  87. NSString *selectPicUrl = unitView.specItem.selectedPicUrl;
  88. if (selectPicUrl){
  89. [self clearAllSpecPicUrl];
  90. unitView.specItem.selectedPicUrl = selectPicUrl;
  91. }
  92. if ([self.delegate respondsToSelector:@selector(didChangeSpecState:)]){
  93. [self.delegate didChangeSpecState:self];
  94. }
  95. }
  96. - (void)showSizePic{
  97. // 查看尺码表
  98. if ([self.delegate respondsToSelector:@selector(clickShowSizeBtn)]){
  99. [self.delegate clickShowSizeBtn];
  100. }
  101. }
  102. - (void)showSizeLink {
  103. if ([self.delegate respondsToSelector:@selector(clickShowSizeLinkBtn)]){
  104. [self.delegate clickShowSizeLinkBtn];
  105. }
  106. }
  107. - (void)clearAllSpecPicUrl{
  108. for (FKProductSpecItem *specItem in self.specItemArray) {
  109. specItem.selectedPicUrl = nil;
  110. }
  111. }
  112. - (FKProductSpecItem *)specItemAtIndex:(NSInteger)index{
  113. if (index >= 0 && index < self.specItemArray.count) {
  114. return self.specItemArray[index];
  115. }
  116. return nil;
  117. }
  118. #pragma mark - action
  119. #pragma mark - property
  120. - (UIScrollView *)scrollView{
  121. if (_scrollView == nil) {
  122. _scrollView = [[UIScrollView alloc]init];
  123. _scrollView.backgroundColor = [UIColor whiteColor];
  124. _scrollView.showsHorizontalScrollIndicator = NO;
  125. _scrollView.showsVerticalScrollIndicator = NO;
  126. _scrollView.bounces = NO;
  127. }
  128. return _scrollView;
  129. }
  130. - (FKSelectAlertView *)alertView{
  131. if (_alertView == nil) {
  132. _alertView = [[FKSelectAlertView alloc]init];
  133. }
  134. return _alertView;
  135. }
  136. - (FKSelectSpecAmountView *)amountView{
  137. if (_amountView == nil) {
  138. _amountView = [[FKSelectSpecAmountView alloc]init];
  139. }
  140. return _amountView;
  141. }
  142. @end