RQTimeADCell.m 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. //
  2. // RQTimeADCell.m
  3. // jiaPei
  4. //
  5. // Created by 张嵘 on 2022/11/28.
  6. // Copyright © 2022 JCZ. All rights reserved.
  7. //
  8. #import "RQTimeADCell.h"
  9. @interface RQTimeADCell ()
  10. @property (nonatomic, readwrite, strong) RQTimeADItemViewModel *viewModel;
  11. @property (nonatomic, readwrite, strong) SDCycleScrollView *myCycleScrollView;
  12. @property (nonatomic, readwrite, strong) NSArray *adArray;
  13. @end
  14. @implementation RQTimeADCell
  15. #pragma mark - PublicMethods
  16. + (instancetype)cellWithCollectionView:(UICollectionView *)collectionView forIndexPath:(NSIndexPath *)indexPath {
  17. static NSString *ID = @"RQTimeADCell";
  18. [collectionView registerNib:[UINib nibWithNibName:ID bundle:nil] forCellWithReuseIdentifier:ID];
  19. RQTimeADCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
  20. if (!cell) cell = [self rq_viewFromXib];
  21. return cell;
  22. }
  23. - (void)bindViewModel:(RQTimeADItemViewModel *)viewModel {
  24. self.viewModel = viewModel;
  25. if (self.adArray.count > 0) {
  26. NSMutableArray *arr = [self.adArray.rac_sequence map:^id _Nullable(NSDictionary *dic) {
  27. return dic[@"IMG"];
  28. }].array.mutableCopy;
  29. if (arr.count >= 1) {
  30. [arr insertObject:@"RQ-AD" atIndex:1];
  31. } else {
  32. [arr addObject:@"RQ-AD"];
  33. }
  34. self.myCycleScrollView.imageURLStringsGroup = arr.copy;
  35. } else {
  36. }
  37. }
  38. #pragma mark - SystemMethods
  39. - (void)awakeFromNib {
  40. [super awakeFromNib];
  41. [self addSubview:self.myCycleScrollView];
  42. }
  43. #pragma mark - SDCycleScrollViewDelegate
  44. - (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index {
  45. if (self.adArray.count >= 1) {
  46. if (index == 1) return;
  47. } else {
  48. if (index >= self.adArray.count) return;
  49. }
  50. NSDictionary *dic = self.adArray[index];
  51. [RQ_SHARE_FUNCTION saveObjectWithObject:dic ForKey:@"currentSelectDic"];
  52. NSString *skipType = dic[@"OPENTYPE"];
  53. if ([skipType isEqualToString:@"1"]) {
  54. [RQ_SHARE_FUNCTION gotoWebViewWithUrlStr:dic[@"URL"]];
  55. }else{
  56. if ([dic[@"ADTYPE"] isEqualToString:@"2"]) {
  57. [RQ_SHARE_FUNCTION miniwithUserName:dic[@"URL"] path:dic[@"AI_XCX_URL"]? : @""];
  58. } else if ([dic[@"ADTYPE"] isEqualToString:@"1"]) {
  59. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:dic[@"URL"]] options:@{} completionHandler:^(BOOL success) {
  60. }];
  61. } else if ([dic[@"ADTYPE"] isEqualToString:@"3"]) {
  62. WXSubscribeMsgReq *req = [[WXSubscribeMsgReq alloc] init];
  63. req.scene = 1;
  64. req.templateId = @"1iZwYeI2QtSXZ3rTRkQ42wgRkd7NSINzem8R-LvtHYw";
  65. req.reserved = @"";
  66. [WXApi sendReq:req completion:nil];
  67. }
  68. }
  69. }
  70. - (SDCycleScrollView *)myCycleScrollView {
  71. if (!_myCycleScrollView) {
  72. _myCycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(16, 8, RQ_SCREEN_WIDTH - 32.f, (RQ_SCREEN_WIDTH - 32.f) * (80 / 345.f)) imageNamesGroup:@[@"adPlaceHolder"]];
  73. _myCycleScrollView.layer.cornerRadius = 10.f;
  74. _myCycleScrollView.layer.masksToBounds = YES;
  75. _myCycleScrollView.localizationImageNamesGroup = @[@"adPlaceHolder"];
  76. _myCycleScrollView.delegate = self;
  77. _myCycleScrollView.autoScrollTimeInterval = 5;
  78. _myCycleScrollView.placeholderImage = RQImageNamed(@"adPlaceHolder");
  79. _myCycleScrollView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill;
  80. }
  81. return _myCycleScrollView;
  82. }
  83. - (NSArray *)adArray {
  84. //广告
  85. NSMutableArray *newAD = [NSMutableArray array];
  86. for (NSDictionary *dic in myDelegate.adArray) {
  87. if ([dic[@"LOCATION"] isEqualToString:@"6"]) {
  88. [newAD addObject:dic];
  89. }
  90. }
  91. return newAD.copy;
  92. }
  93. @end