MHSpecificEffectView.m 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. //
  2. // MHSpecificEffectView.m
  3. #import "MHSpecificEffectView.h"
  4. #import "MHBeautyMenuCell.h"
  5. #import "MHBeautyParams.h"
  6. #import "MHBeautiesModel.h"
  7. @interface MHSpecificEffectView ()<UICollectionViewDelegate,UICollectionViewDataSource>
  8. @property (nonatomic, strong) UICollectionView *collectionView;
  9. @property (nonatomic, strong) NSMutableArray *specificArr;//存特效数据模型
  10. @property (nonatomic, assign) NSInteger lastIndex;
  11. @end
  12. @implementation MHSpecificEffectView
  13. - (instancetype)initWithFrame:(CGRect)frame {
  14. if (self = [super initWithFrame:frame]) {
  15. [self addSubview:self.collectionView];
  16. }
  17. return self;
  18. }
  19. #pragma mark - dataSource
  20. - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
  21. return self.specificArr.count;
  22. }
  23. - (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
  24. MHBeautyMenuCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MHSpecificCell" forIndexPath:indexPath];
  25. cell.quickModel = self.specificArr[indexPath.row];
  26. return cell;
  27. }
  28. - (CGSize)collectionView:(UICollectionView *)collectionView
  29. layout:(UICollectionViewLayout *)collectionViewLayout
  30. sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
  31. return CGSizeMake(([UIScreen mainScreen].bounds.size.width-20) /6, MHSpecificCellHeight);
  32. }
  33. #pragma mark - delegate
  34. - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
  35. if (self.lastIndex == indexPath.row) {
  36. return;
  37. }
  38. MHBeautiesModel *model = self.specificArr[indexPath.row];
  39. model.isSelected = !model.isSelected;
  40. if ([self.delegate respondsToSelector:@selector(handleSpecific:)]) {
  41. [self.delegate handleSpecific:model.type];
  42. }
  43. if (isSaveSpecialFilter) {
  44. [[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithFormat:@"%ld",(long)model.type] forKey:kMHSpecialFilter];
  45. }
  46. MHBeautiesModel *lastModel = self.specificArr[self.lastIndex];
  47. lastModel.isSelected = !lastModel.isSelected;
  48. [self.collectionView reloadData];
  49. self.lastIndex = indexPath.row;
  50. }
  51. #pragma mark - lazy
  52. -(NSMutableArray *)specificArr {
  53. if (!_specificArr) {
  54. NSMutableArray * selectedItemArray = [MHSDK shareInstance].specificEffectArray;
  55. NSString *path = [[NSBundle mainBundle] pathForResource:@"MHSpecificEffecParams" ofType:@"plist"];
  56. NSArray *items = [NSArray arrayWithContentsOfFile:path];
  57. NSMutableArray * selectedItems = [NSMutableArray array];
  58. for (int i = 0; i < selectedItemArray.count; i ++) {
  59. NSDictionary * selectedItemDic = selectedItemArray[i];
  60. NSString * selectedName = selectedItemDic[@"name"];
  61. for (int j = 0; j < items.count; j++) {
  62. NSDictionary * itemDic = items[j];
  63. NSString * itemName = itemDic[@"name"];
  64. if ([selectedName isEqual:itemName]) {
  65. [selectedItems addObject:itemDic];
  66. }
  67. }
  68. }
  69. _specificArr = [NSMutableArray array];
  70. for (int i = 0; i<selectedItems.count; i++) {
  71. NSDictionary * itemDic = selectedItems[i];
  72. MHBeautiesModel *model = [[MHBeautiesModel alloc] init];
  73. model.imgName = itemDic[@"imageName"];
  74. model.beautyTitle = itemDic[@"name"];
  75. model.type = [itemDic[@"type"] integerValue];
  76. model.menuType = MHBeautyMenuType_Specify;
  77. if (isSaveSpecialFilter) {
  78. NSString *type = [[NSUserDefaults standardUserDefaults] objectForKey:kMHSpecialFilter];
  79. if (model.type == type.integerValue) {
  80. model.isSelected = YES;
  81. self.lastIndex = i;
  82. }else{
  83. model.isSelected = NO;
  84. }
  85. }else{
  86. model.isSelected = i == 0 ? YES : NO;
  87. }
  88. [_specificArr addObject:model];
  89. }
  90. }
  91. return _specificArr;
  92. }
  93. - (UICollectionView *)collectionView {
  94. if (!_collectionView) {
  95. UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
  96. layout.minimumLineSpacing = 0;
  97. layout.minimumInteritemSpacing = 0;
  98. layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
  99. layout.sectionInset = UIEdgeInsetsMake(20, 10, 0, 10);
  100. _collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, window_width,self.frame.size.height) collectionViewLayout:layout];
  101. ///修改MHUI
  102. _collectionView.backgroundColor = [UIColor clearColor];
  103. _collectionView.showsHorizontalScrollIndicator = NO;
  104. _collectionView.delegate = self;
  105. _collectionView.dataSource = self;
  106. [_collectionView registerClass:[MHBeautyMenuCell class] forCellWithReuseIdentifier:@"MHSpecificCell"];
  107. }
  108. return _collectionView;
  109. }
  110. @end