123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- //
- // YMPersonalPageAlbumView.m
- // MSYOUPAI
- //
- // Created by YoMi on 2024/2/17.
- // Copyright © 2024 MS. All rights reserved.
- //
- #import "YMPersonalPageAlbumView.h"
- #import "YMPersonalPageViewModel.h"
- #import "YMPersonalPageMainAlbumCell.h"
- #import "YMPersonalPageSubAlbumCell.h"
- @interface YMPersonalPageAlbumView ()<TYCyclePagerViewDataSource,TYCyclePagerViewDelegate,YBImageBrowserDelegate>
- /// 个人主页VM
- @property (nonatomic, strong) YMPersonalPageViewModel *viewModel;
- /// 主相册视图
- @property (nonatomic, strong) TYCyclePagerView *mainAlbumView;
- /// 子相册视图
- @property (nonatomic, strong) TYCyclePagerView *subAlbumView;
- /// 展示语音视图
- @property (nonatomic, strong) UIImageView *showcaseVoiceView;
- /// 展示语音秒数
- @property (nonatomic, strong) UILabel *showcaseVoiceSecondsLb;
- @end
- @implementation YMPersonalPageAlbumView
- - (void)ym_setupViews{
- [self addSubview:self.mainAlbumView];
- [self addSubview:self.subAlbumView];
- [self addSubview:self.showcaseVoiceView];
- [self.showcaseVoiceView addSubview:self.showcaseVoiceSecondsLb];
-
- [self setNeedsUpdateConstraints];
- [self updateConstraintsIfNeeded];
- }
- - (void)updateConstraints{
-
- [self.mainAlbumView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self);
- make.left.equalTo(self);
- make.right.equalTo(self);
- make.bottom.equalTo(self);
- make.height.mas_equalTo(adapt(375));
- }];
-
- [self.subAlbumView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self).offset(adapt(12));
- make.right.equalTo(self).offset(adapt(-100));
- make.bottom.equalTo(self).offset(adapt(-20));
- make.height.mas_equalTo(adapt(44));
- }];
-
- [self.showcaseVoiceView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerY.equalTo(self.subAlbumView.mas_centerY);
- make.right.equalTo(self).offset(adapt(-20));
- make.width.mas_equalTo(adapt(73));
- make.height.mas_equalTo(adapt(28));
- }];
-
- [self.showcaseVoiceSecondsLb mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerY.equalTo(self.showcaseVoiceView.mas_centerY);
- make.right.equalTo(self.showcaseVoiceView).offset(adapt(-5));
- }];
- [super updateConstraints];
- }
- - (void)ym_bindViewModel:(YMPersonalPageViewModel *)viewModel{
- if (!viewModel) {
- return;
- }
-
- _viewModel = viewModel;
-
- @weakify(self)
- [[self.viewModel.refreshUISubject takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id result) {
- @strongify(self)
- [self.mainAlbumView reloadData];
- [self.subAlbumView reloadData];
- }];
-
- [[[[RACObserve(self.viewModel, showcaseVoiceSeconds) distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSNumber * showcaseVoiceSeconds) {
- @strongify(self)
- self.showcaseVoiceView.hidden = [showcaseVoiceSeconds intValue] == 0 ? YES : NO;
- self.showcaseVoiceSecondsLb.text = stringFormat(@"%d",[showcaseVoiceSeconds intValue]);
- }];
- }
- #pragma mark - mainAlbumView
- - (NSInteger)numberOfItemsInPagerView:(TYCyclePagerView *)pageView {
- if (pageView == self.mainAlbumView) {
- return self.viewModel.albumDataArray.count;
- } else {
- return self.viewModel.albumDataArray.count;
- }
-
- }
- - (UICollectionViewCell *)pagerView:(TYCyclePagerView *)pagerView cellForItemAtIndex:(NSInteger)index {
- if (pagerView == self.mainAlbumView) {
- YMPersonalPageMainAlbumCell *cell = [pagerView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YMPersonalPageMainAlbumCell class]) forIndex:index];
- [cell ym_bindViewModel:self.viewModel.albumDataArray[index]];
- return cell;
- } else {
- YMPersonalPageSubAlbumCell *cell = [pagerView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YMPersonalPageSubAlbumCell class]) forIndex:index];
- [cell ym_bindViewModel:self.viewModel.albumDataArray[index]];
- return cell;
- }
-
- }
- /// banner样式
- - (TYCyclePagerViewLayout *)layoutForPagerView:(TYCyclePagerView *)pageView {
- TYCyclePagerViewLayout *layout = [[TYCyclePagerViewLayout alloc]init];
- if (pageView == self.mainAlbumView) {
- layout.itemSpacing = 0;
- layout.itemSize = CGSizeMake(pageView.bounds.size.width, pageView.bounds.size.height);
- } else {
- layout.itemSpacing = 5;
- layout.itemSize = CGSizeMake(adapt(30), adapt(30));
- }
- layout.scrollDirection = TYCyclePagerScrollDirectionHorizontal;
- return layout;
- }
- /// pagerView当前展示
- - (void)pagerView:(TYCyclePagerView *)pageView didScrollFromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex {
-
- if (pageView == self.mainAlbumView) {
- YMPersonalPageSubAlbumCell *fromIndexCell = (YMPersonalPageSubAlbumCell*)[self.subAlbumView.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:fromIndex inSection:self.subAlbumView.indexSection.section]];
- fromIndexCell.borderWidth = 0;
-
- YMPersonalPageSubAlbumCell *toIndexCell = (YMPersonalPageSubAlbumCell*)[self.subAlbumView.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:toIndex inSection:self.subAlbumView.indexSection.section]];
- toIndexCell.borderWidth = 1;
-
- [self.subAlbumView scrollToItemAtIndex:toIndex animate:YES];
- }else if (pageView == self.subAlbumView) {
-
- }
-
- }
- - (void)pagerView:(TYCyclePagerView *)pageView didSelectedItemCell:(__kindof UICollectionViewCell *)cell atIndex:(NSInteger)index{
- if (pageView == self.subAlbumView) {
- [self.mainAlbumView scrollToItemAtIndex:index animate:YES];
- }else if (pageView == self.mainAlbumView) {
-
- NSMutableArray *albumArr = [NSMutableArray array];
-
- for (YMPersonalPageAlbumCellViewModel *model in self.viewModel.albumDataArray) {
- if (model.isVideo) {
- YBIBVideoData *data = [YBIBVideoData new];
- data.videoURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@/%@",[LCSaveData getImageUrl]?[LCSaveData getImageUrl]:BaseImgUrl,model.albumUrl]];
- data.projectiveView = self.mainAlbumView;
- [albumArr addObject:data];
- }else{
- YBIBImageData *data = [YBIBImageData new];
- data.imageURL = [LCTools getImageUrlWithAddress:model.albumUrl];
- data.projectiveView = self.mainAlbumView;
- [albumArr addObject:data];
- }
- }
-
- YBImageBrowser *browser = [YBImageBrowser new];
- browser.delegate = self;
- browser.dataSourceArray = albumArr;
- browser.currentPage = index;
- [browser show];
- }
-
- }
- - (void)pagerViewDidScroll:(TYCyclePagerView *)pageView{
- }
- /// pagerView将开始拖动
- - (void)pagerViewWillBeginDragging:(TYCyclePagerView *)pageView{
- }
- /// pagerView将开始减速
- - (void)pagerViewWillBeginDecelerating:(TYCyclePagerView *)pageView{
- }
- /// pagerView确认结束
- - (void)pagerViewDidEndDragging:(TYCyclePagerView *)pageView willDecelerate:(BOOL)decelerate{
- }
- /// pagerView确认减速
- - (void)pagerViewDidEndDecelerating:(TYCyclePagerView *)pageView{
- }
- /// pagerView将开始滚动动画
- - (void)pagerViewWillBeginScrollingAnimation:(TYCyclePagerView *)pageView{
- }
- /// pagerView确认结束滚动动画
- - (void)pagerViewDidEndScrollingAnimation:(TYCyclePagerView *)pageView{
- }
- - (TYCyclePagerView *)mainAlbumView{
- if (!_mainAlbumView) {
- _mainAlbumView = [[TYCyclePagerView alloc]init];
- _mainAlbumView.dataSource = self;
- _mainAlbumView.delegate = self;
- //无限滚动
- _mainAlbumView.isInfiniteLoop = NO;
- //自动轮播
- _mainAlbumView.autoScrollInterval = 0;
- [_mainAlbumView registerClass:[YMPersonalPageMainAlbumCell class] forCellWithReuseIdentifier:NSStringFromClass([YMPersonalPageMainAlbumCell class])];
- }
- return _mainAlbumView;
- }
- - (TYCyclePagerView *)subAlbumView{
- if (!_subAlbumView) {
- _subAlbumView = [[TYCyclePagerView alloc]init];
- _subAlbumView.dataSource = self;
- _subAlbumView.delegate = self;
- //无限滚动
- _subAlbumView.isInfiniteLoop = NO;
- //自动轮播
- _subAlbumView.autoScrollInterval = 0;
- [_subAlbumView registerClass:[YMPersonalPageSubAlbumCell class] forCellWithReuseIdentifier:NSStringFromClass([YMPersonalPageSubAlbumCell class])];
- }
- return _subAlbumView;
- }
- - (UIImageView *)showcaseVoiceView{
- if (!_showcaseVoiceView) {
- _showcaseVoiceView = [[UIImageView alloc]init];
- _showcaseVoiceView.image = ImageByName(@"ym_personal_call_bg");
- _showcaseVoiceView.userInteractionEnabled = true;
- WS(weakSelf)
- UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
- [_showcaseVoiceView addGestureRecognizer:tap];
- [[[tap rac_gestureSignal] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id x) {
- if (!OCStringIsEmpty(weakSelf.viewModel.showcaseVoice)){
- [YMAudioPlayer sharedInstance].playUrlStr = [LCTools getImageUrlWithAddress:weakSelf.viewModel.showcaseVoice].absoluteString;
- }else{
- NSLog(@"路径错误");
- }
- }];
- }
- return _showcaseVoiceView;
- }
- - (UILabel *)showcaseVoiceSecondsLb{
- if (!_showcaseVoiceSecondsLb) {
- _showcaseVoiceSecondsLb = [[UILabel alloc]init];
- _showcaseVoiceSecondsLb.font = LCFont(12);
- _showcaseVoiceSecondsLb.textColor = HexColorFromRGB(0xFFFFFF);
- _showcaseVoiceSecondsLb.textAlignment = NSTextAlignmentRight;
- _showcaseVoiceSecondsLb.text = @"**";
- }
- return _showcaseVoiceSecondsLb;
- }
- @end
|