// // PBExamineTableHeaderView.m // IphoneBIMe // // Created by zjf on 2018/11/29. // Copyright © 2018 ProBIM. All rights reserved. // #import "PBExamineTableHeaderView.h" #import "PBImageCollectionViewCell.h" #import "PBProjectModel.h" static NSString *cellID = @"cellID"; @interface PBExamineTableHeaderView() @property (nonatomic, strong) UICollectionView *collectionView; @property (nonatomic, strong) UIButton *photoBtn; @property (nonatomic, strong) UIPageControl *pageControl; //记录当前页码 @property (nonatomic, assign) NSInteger currentPage; @property (nonatomic, weak) UIImageView *videoImageV; @property (nonatomic, weak) UIButton *playBtn; @property (nonatomic, weak) UIButton *deleteBtn; @end @implementation PBExamineTableHeaderView - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { [self setupUI]; } return self; } - (void)setupUI { UIImageView *bgImageV = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Examine_add_photo_bg"]]; [self addSubview:bgImageV]; [bgImageV mas_makeConstraints:^(MASConstraintMaker *make) { make.top.bottom.left.right.equalTo(self); }]; UIButton *uploadPhotoBtn = [UIButton z_bgImageButton:[UIImage imageNamed:@"Examine_upload_photo"]]; [uploadPhotoBtn addTarget:self action:@selector(uploadPhoto) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:uploadPhotoBtn]; [uploadPhotoBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.center.equalTo(self); }]; [self addSubview:self.collectionView]; [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.bottom.left.right.equalTo(self); }]; self.collectionView.hidden = YES; UIButton *photoBtn = [UIButton z_bgImageButton:[UIImage imageNamed:@"Examine_camera"]]; [photoBtn addTarget:self action:@selector(uploadPhoto) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:photoBtn]; [photoBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.equalTo(self); make.right.equalTo(self).offset(-10); }]; photoBtn.hidden = YES; UIPageControl *pageControl = [[UIPageControl alloc] init]; pageControl.numberOfPages = 5; pageControl.currentPage = 3; pageControl.pageIndicatorTintColor = [UIColor whiteColor]; pageControl.currentPageIndicatorTintColor = WarningColor; pageControl.hidesForSinglePage = YES; [self addSubview:pageControl]; [pageControl mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self); make.bottom.equalTo(self).offset(-13); }]; self.pageControl.currentPage = 0; self.photoBtn = photoBtn; self.pageControl = pageControl; self.pageControl.hidden = YES; UIImageView *videoImageV = [[UIImageView alloc] init]; [self addSubview:videoImageV]; [videoImageV mas_makeConstraints:^(MASConstraintMaker *make) { make.top.bottom.left.right.equalTo(self); }]; UIButton *playBtn = [UIButton z_bgImageButton:[UIImage imageNamed:@"details_play"]]; [playBtn addTarget:self action:@selector(playVideo) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:playBtn]; [playBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.center.equalTo(self); make.size.mas_equalTo(CGSizeMake(92, 92)); }]; UIButton *deleteBtn = [UIButton z_bgImageButton:[UIImage imageNamed:@"Issue_image_delete"]]; [deleteBtn addTarget:self action:@selector(deleteVideo) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:deleteBtn]; [deleteBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self).offset(5); make.right.equalTo(self).offset(-5); make.size.mas_equalTo(CGSizeMake(24, 24)); }]; self.videoImageV = videoImageV; self.playBtn = playBtn; self.deleteBtn = deleteBtn; self.deleteBtn.hidden = YES; self.playBtn.hidden = YES; self.videoImageV.hidden = YES; } - (void)uploadPhoto { if (self.ChooseImageBlock) { self.ChooseImageBlock(); } } - (void)playVideo { NSLog(@"开始播放"); if (self.PlayVideoBlock) { self.PlayVideoBlock(); } } - (void)deleteVideo { NSLog(@"删除视频"); if (self.DeleteVideoBlock) { self.DeleteVideoBlock(); } } - (UICollectionView *)collectionView { if (!_collectionView) { UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout.alloc init]; layout.itemSize = CGSizeMake(self.width, self.height); layout.minimumLineSpacing = 0; layout.minimumInteritemSpacing = 0; layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; _collectionView = [UICollectionView.alloc initWithFrame:CGRectZero collectionViewLayout:layout]; [_collectionView registerClass:[PBImageCollectionViewCell class] forCellWithReuseIdentifier:cellID]; _collectionView.delegate = self; _collectionView.dataSource = self; _collectionView.pagingEnabled = YES; _collectionView.bounces = NO; _collectionView.showsHorizontalScrollIndicator = NO; _collectionView.backgroundColor = [UIColor whiteColor]; } return _collectionView; } #pragma mark - UICollectionViewDataSource - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { if (_isAddExamine) { return self.imageArr.count; }else { return self.detailsImageArr.count; } } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { PBImageCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellID forIndexPath:indexPath]; cell.roleType = self.roleType; cell.DeleteImageBlock = ^{ NSInteger count; if (self.isAddExamine) { count = self.imageArr.count - 1; }else { count = self.detailsImageArr.count - 1; } if (self.currentPage == (self.imageArr.count - 1) && self.currentPage != 0) { --self.currentPage; } if (self.DeleteImageBlock) { self.DeleteImageBlock(indexPath.row); } }; if (_isAddExamine) { cell.image = self.imageArr[indexPath.row]; }else { NSString *url = [NSString stringWithFormat:@"%@%@",BaseUrl, [self.detailsImageArr[indexPath.row] valueForKey:@"AttachmentUrl"]]; cell.imageUrl = url; } return cell; } #pragma mark - UICollectionViewDelegate - (void)scrollViewDidScroll:(UIScrollView *)scrollView { self.currentPage = scrollView.contentOffset.x / self.width; self.pageControl.currentPage = self.currentPage; } - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { SDPhotoBrowser *photoBrowser = [SDPhotoBrowser new]; photoBrowser.delegate = self; photoBrowser.currentImageIndex = indexPath.item; if (self.isAddExamine) { photoBrowser.imageCount = self.imageArr.count; }else { photoBrowser.imageCount = self.detailsImageArr.count; } photoBrowser.sourceImagesContainerView = self.collectionView; [photoBrowser show]; } #pragma mark SDPhotoBrowserDelegate // 返回临时占位图片(即原来的小图) - (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { // 不建议用此种方式获取小图,这里只是为了简单实现展示而已 PBImageCollectionViewCell *cell = (PBImageCollectionViewCell *)[self collectionView:self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]]; return cell.imageV.image; } - (void)setImageArr:(NSMutableArray *)imageArr { _imageArr = imageArr; self.videoImageV.hidden = YES; self.playBtn.hidden = YES; self.deleteBtn.hidden = YES; [self setPageControl]; } - (void)setVideoArr:(NSMutableArray *)videoArr { _videoArr = videoArr; self.videoImageV.hidden = NO; self.playBtn.hidden = NO; self.deleteBtn.hidden = NO; LFResultVideo *result = videoArr[0]; self.videoImageV.image = result.coverImage; } - (void)setPageControl { NSArray *arr; if (_isAddExamine) { arr = self.imageArr; }else { arr = self.detailsImageArr; } if (arr.count != 0) { self.collectionView.hidden = NO; self.photoBtn.hidden = NO; self.pageControl.hidden = NO; if (self.isAddExamine) { self.pageControl.numberOfPages = self.imageArr.count; }else { self.pageControl.numberOfPages = self.detailsImageArr.count; } self.pageControl.currentPage = self.currentPage; [self.collectionView reloadData]; }else { self.photoBtn.hidden = YES; self.collectionView.hidden = YES; self.pageControl.hidden = YES; [self.collectionView reloadData]; } } - (void)setDetailsImageArr:(NSArray *)detailsImageArr { _detailsImageArr = detailsImageArr; [self setPageControl]; } - (void)setIsAddExamine:(BOOL)isAddExamine { _isAddExamine = isAddExamine; } - (void)setProjectModel:(PBProjectModel *)projectModel { _projectModel = projectModel; } - (void)setRoleType:(RoleType)roleType { _roleType = roleType; } @end