LZImageBrowserMainView.m 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. //
  2. // LZImageBrowserMainView.m
  3. // LZImageDetail
  4. //
  5. // Created by shenzhenshihua on 2018/4/28.
  6. // Copyright © 2018年 shenzhenshihua. All rights reserved.
  7. //
  8. #import "LZImageBrowserMainView.h"
  9. #import "LZImageBrowserHeader.h"
  10. #import "LZImageBrowserModel.h"
  11. #import "LZImageBrowserSubView.h"
  12. @interface LZImageBrowserMainView ()<UIScrollViewDelegate,LZImageBrowserSubViewDelegate>
  13. @property(nonatomic,strong)UIScrollView * mainScrollView;
  14. @property(nonatomic,strong)UIPageControl * pageControl;
  15. @property(nonatomic,copy)NSArray * imageUrls;
  16. @property(nonatomic,copy)NSArray * originImageViews;
  17. @end
  18. @implementation LZImageBrowserMainView
  19. + (id)imageBrowserMainViewUrlStr:(NSArray<NSString *>*)imageUrls originImageViews:(NSArray<UIImageView *>*)originImageViews selectPage:(NSInteger)selectPage {
  20. LZImageBrowserMainView * imageBrowserMainView = [[LZImageBrowserMainView alloc] initWithFrame:Screen_Frame];
  21. imageBrowserMainView.imageUrls = imageUrls;
  22. imageBrowserMainView.originImageViews = originImageViews;
  23. imageBrowserMainView.selectPage = selectPage;
  24. [imageBrowserMainView initData];
  25. [imageBrowserMainView initView];
  26. return imageBrowserMainView;
  27. }
  28. - (void)initData {
  29. for (NSInteger i = 0; i < self.imageUrls.count; i++) {
  30. NSString * urlStr = self.imageUrls[i];
  31. UIImageView * imageView = self.originImageViews[i];
  32. LZImageBrowserModel * imageBrowserModel = [[LZImageBrowserModel alloc] init];
  33. imageBrowserModel.smallImageView = imageView;
  34. imageBrowserModel.urlStr = urlStr;
  35. [self.dataSource addObject:imageBrowserModel];
  36. }
  37. }
  38. - (void)initView {
  39. //1.初始化 mianScrollView
  40. [self addSubview:self.mainScrollView];
  41. //加入子视图
  42. for (NSInteger i = 0; i < self.dataSource.count; i++) {
  43. LZImageBrowserSubView * imageBrowserSubView = [[LZImageBrowserSubView alloc] initWithFrame:CGRectMake((Screen_Width + SpaceWidth)*i, 0, Screen_Width, Screen_Height) ImageBrowserModel:self.dataSource[i]];
  44. imageBrowserSubView.delegate = self;
  45. [self.mainScrollView addSubview:imageBrowserSubView];
  46. }
  47. [self.mainScrollView setContentSize:CGSizeMake((Screen_Width + SpaceWidth)*self.dataSource.count, 0)];
  48. [self.mainScrollView setContentOffset:CGPointMake((Screen_Width + SpaceWidth)*_selectPage, 0)];
  49. //2.设置 pagecontel
  50. [self addSubview:self.pageControl];
  51. self.pageControl.numberOfPages = self.dataSource.count;
  52. CGSize size = [self.pageControl sizeForNumberOfPages:self.dataSource.count];
  53. self.pageControl.frame = CGRectMake(Screen_Width/2-size.width/2, Screen_Height-size.height-20, size.width, size.height);
  54. self.pageControl.currentPage = _selectPage;
  55. }
  56. - (void)subViewHidden:(BOOL)isHidden {
  57. if (isHidden) {
  58. self.mainScrollView.hidden = YES;
  59. self.pageControl.hidden = YES;
  60. } else {
  61. self.mainScrollView.hidden = NO;
  62. self.pageControl.hidden = NO;
  63. }
  64. }
  65. #pragma mark -LZImageBrowserSubViewDelegate
  66. - (void)imageBrowserSubViewSingleTapWithModel:(LZImageBrowserModel *)imageBrowserModel {
  67. if ([self.delegate respondsToSelector:@selector(imageBrowserMianViewSingleTapWithModel:)]) {
  68. [self.delegate imageBrowserMianViewSingleTapWithModel:imageBrowserModel];
  69. }
  70. }
  71. - (void)imageBrowserSubViewTouchMoveChangeMainViewAlpha:(CGFloat)alpha {
  72. if ([self.delegate respondsToSelector:@selector(imageBrowserMainViewTouchMoveChangeMainViewAlpha:)]) {
  73. [self.delegate imageBrowserMainViewTouchMoveChangeMainViewAlpha:alpha];
  74. }
  75. }
  76. #pragma mark -scrollView delegate
  77. - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
  78. CGFloat currentX = scrollView.contentOffset.x;
  79. NSInteger currentPage = currentX / (Screen_Width + SpaceWidth);
  80. _selectPage = currentPage;
  81. [self.pageControl setCurrentPage:currentPage];
  82. }
  83. - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
  84. CGFloat currentX = scrollView.contentOffset.x;
  85. NSInteger currentPage = currentX / (Screen_Width + SpaceWidth);
  86. [self.pageControl setCurrentPage:currentPage];
  87. }
  88. #pragma mark -lazy
  89. - (UIScrollView *)mainScrollView {
  90. if (_mainScrollView == nil) {
  91. _mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, Screen_Width + SpaceWidth, Screen_Height)];
  92. _mainScrollView.delegate = self;
  93. _mainScrollView.backgroundColor = [UIColor clearColor];
  94. _mainScrollView.pagingEnabled = YES;
  95. _mainScrollView.showsHorizontalScrollIndicator = NO;
  96. }
  97. return _mainScrollView;
  98. }
  99. - (UIPageControl *)pageControl {
  100. if (_pageControl == nil) {
  101. _pageControl = [[UIPageControl alloc] init];
  102. //如果只有一页就隐藏
  103. _pageControl.hidesForSinglePage = YES;
  104. //设置page的颜色
  105. _pageControl.pageIndicatorTintColor = [UIColor grayColor];
  106. //设置当前page的颜色
  107. _pageControl.currentPageIndicatorTintColor = [UIColor whiteColor];
  108. }
  109. return _pageControl;
  110. }
  111. - (NSMutableArray *)dataSource {
  112. if (_dataSource == nil) {
  113. _dataSource = [[NSMutableArray alloc] init];
  114. }
  115. return _dataSource;
  116. }
  117. /*
  118. // Only override drawRect: if you perform custom drawing.
  119. // An empty implementation adversely affects performance during animation.
  120. - (void)drawRect:(CGRect)rect {
  121. // Drawing code
  122. }
  123. */
  124. @end