MOSquareBannerReusableView.m 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. //
  2. // MOSquareBannerReusableView.m
  3. // MiMoLive
  4. //
  5. // Created by SuperC on 2024/3/20.
  6. //
  7. #import "MOSquareBannerReusableView.h"
  8. @implementation MOSquareBannerReusableView
  9. - (instancetype)initWithFrame:(CGRect)frame
  10. {
  11. if (self = [super initWithFrame:frame])
  12. {
  13. [self setupUI];
  14. }
  15. return self;
  16. }
  17. - (void)setupUI{
  18. self.layer.masksToBounds = YES;
  19. self.layer.cornerRadius = 16;
  20. [self addSubview:self.pagerView];
  21. [self.pagerView mas_makeConstraints:^(MASConstraintMaker *make) {
  22. make.top.equalTo(self).offset(0.0);
  23. make.left.equalTo(self).offset(0.0);
  24. make.right.equalTo(self).offset(0.0);
  25. make.height.equalTo(@82.0);
  26. }];
  27. [self.pagerView addSubview:self.pageControl];
  28. [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) {
  29. make.right.equalTo(self.pagerView).offset(-48.0);
  30. make.bottom.equalTo(self.pagerView).offset(-8.0);
  31. make.height.equalTo(@10.0);
  32. }];
  33. }
  34. - (void)setImageArr:(NSArray *)imageArr{
  35. _imageArr = imageArr;
  36. if(imageArr.count <= 1){
  37. self.pageControl.hidden = YES;
  38. }
  39. else{
  40. self.pageControl.hidden = NO;
  41. }
  42. self.pageControl.numberOfPages = imageArr.count;
  43. [self.pagerView reloadData];
  44. }
  45. #pragma mark - TYCyclePagerViewDataSource
  46. - (NSInteger)numberOfItemsInPagerView:(TYCyclePagerView *)pageView {
  47. return self.imageArr.count;
  48. }
  49. - (UICollectionViewCell *)pagerView:(TYCyclePagerView *)pagerView cellForItemAtIndex:(NSInteger)index {
  50. MOJumpList *jumpModel = self.imageArr[index];
  51. MOBaseBannerCell *cell = [pagerView dequeueReusableCellWithReuseIdentifier:MOBaseBannerCell_ID forIndex:index];
  52. cell.contentView.layer.masksToBounds = YES;
  53. cell.contentView.layer.cornerRadius = 16;
  54. [cell.iconImgView sd_setImageWithURL:[NSURL URLWithString:jumpModel.img]];
  55. return cell;
  56. }
  57. - (TYCyclePagerViewLayout *)layoutForPagerView:(TYCyclePagerView *)pageView {
  58. TYCyclePagerViewLayout *layout = [[TYCyclePagerViewLayout alloc]init];
  59. layout.itemSize = CGSizeMake(CGRectGetWidth(pageView.frame), CGRectGetHeight(pageView.frame));
  60. layout.itemSpacing = 0;
  61. return layout;
  62. }
  63. - (void)pagerView:(TYCyclePagerView *)pageView didScrollFromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex {
  64. // MOLogV(@"%ld -> %ld",fromIndex,toIndex);
  65. self.pageControl.currentPage = toIndex;
  66. }
  67. - (void)pagerView:(TYCyclePagerView *)pageView didSelectedItemCell:(__kindof UICollectionViewCell *)cell atIndex:(NSInteger)index{
  68. MOJumpList *jumpModel = self.imageArr[index];
  69. SendObjNotification(@"MOSquareListVC_H5Jump", jumpModel);
  70. }
  71. - (TYCyclePagerView *)pagerView{
  72. if(!_pagerView){
  73. CGFloat width = SCREENWIDTH - 12.0 * 2.0;
  74. _pagerView = [[TYCyclePagerView alloc] initWithFrame:CGRectMake(0.0, 0.0, width, 80.0)];
  75. _pagerView.layer.cornerRadius = 16.0;
  76. _pagerView.layer.masksToBounds = YES;
  77. _pagerView.isInfiniteLoop = YES;
  78. _pagerView.autoScrollInterval = 3.0;
  79. _pagerView.dataSource = self;
  80. _pagerView.delegate = self;
  81. [_pagerView registerClass:[MOBaseBannerCell class] forCellWithReuseIdentifier:MOBaseBannerCell_ID];
  82. }
  83. return _pagerView;
  84. }
  85. - (TYPageControl *)pageControl{
  86. if(!_pageControl){
  87. _pageControl = [[TYPageControl alloc] init];
  88. _pageControl.pageIndicatorSize = CGSizeMake(6.0, 6.0);
  89. _pageControl.currentPageIndicatorSize = CGSizeMake(16.0, 6.0);
  90. _pageControl.pageIndicatorTintColor = [MOTools colorWithHexString:@"#FFFFFF" alpha:0.5];
  91. _pageControl.currentPageIndicatorTintColor = [UIColor whiteColor];
  92. _pageControl.pageIndicatorSpaing = 4.0;
  93. }
  94. return _pageControl;
  95. }
  96. @end