From c4f014d2fcf9c39b1d8909305cb635d91ceb8bfd Mon Sep 17 00:00:00 2001 From: chenguilong <598604202@qq.com> Date: Fri, 23 Sep 2022 17:00:35 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5-=E4=B8=BA=E4=BD=A0=E6=8E=A8?= =?UTF-8?q?=E8=8D=90UI=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xplan-ios.xcodeproj/project.pbxproj | 6 + .../home_menu_friend.imageset/Contents.json | 22 ++ .../home_menu_friend@2x.png | Bin 0 -> 8829 bytes .../home_menu_friend@3x.png | Bin 0 -> 14524 bytes .../home_menu_game.imageset/Contents.json | 22 ++ .../home_menu_game@2x.png | Bin 0 -> 8358 bytes .../home_menu_game@3x.png | Bin 0 -> 14967 bytes .../home_menu_live.imageset/Contents.json | 22 ++ .../home_menu_live@2x.png | Bin 0 -> 8612 bytes .../home_menu_live@3x.png | Bin 0 -> 13963 bytes .../Home/View/Cell/XPHomeMenuTableViewCell.m | 31 ++- .../View/Cell/XPHomeRecommendTableViewCell.m | 189 +++++---------- .../Cell/XPHomeRedommendCollectionViewCell.h | 19 ++ .../Cell/XPHomeRedommendCollectionViewCell.m | 219 ++++++++++++++++++ .../View/SubViews/XPHomeRecommendHeaderView.m | 4 +- 15 files changed, 379 insertions(+), 155 deletions(-) create mode 100644 xplan-ios/Assets.xcassets/Home/home_menu_friend.imageset/Contents.json create mode 100644 xplan-ios/Assets.xcassets/Home/home_menu_friend.imageset/home_menu_friend@2x.png create mode 100644 xplan-ios/Assets.xcassets/Home/home_menu_friend.imageset/home_menu_friend@3x.png create mode 100644 xplan-ios/Assets.xcassets/Home/home_menu_game.imageset/Contents.json create mode 100644 xplan-ios/Assets.xcassets/Home/home_menu_game.imageset/home_menu_game@2x.png create mode 100644 xplan-ios/Assets.xcassets/Home/home_menu_game.imageset/home_menu_game@3x.png create mode 100644 xplan-ios/Assets.xcassets/Home/home_menu_live.imageset/Contents.json create mode 100644 xplan-ios/Assets.xcassets/Home/home_menu_live.imageset/home_menu_live@2x.png create mode 100644 xplan-ios/Assets.xcassets/Home/home_menu_live.imageset/home_menu_live@3x.png create mode 100644 xplan-ios/Main/Home/View/Cell/XPHomeRedommendCollectionViewCell.h create mode 100644 xplan-ios/Main/Home/View/Cell/XPHomeRedommendCollectionViewCell.m diff --git a/xplan-ios.xcodeproj/project.pbxproj b/xplan-ios.xcodeproj/project.pbxproj index e0e54a69..27af0920 100644 --- a/xplan-ios.xcodeproj/project.pbxproj +++ b/xplan-ios.xcodeproj/project.pbxproj @@ -168,6 +168,7 @@ 9B42869528C1E00A009034D2 /* XPRedPacketResultModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42869428C1E00A009034D2 /* XPRedPacketResultModel.m */; }; 9B42869828C1E06B009034D2 /* XPRedPacketModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42869728C1E06B009034D2 /* XPRedPacketModel.m */; }; 9B42869C28C1FD3D009034D2 /* XPOpenRedPacketCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42869B28C1FD3D009034D2 /* XPOpenRedPacketCell.m */; }; + 9B46B91728DDA893000E30DB /* XPHomeRedommendCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B46B91628DDA893000E30DB /* XPHomeRedommendCollectionViewCell.m */; }; 9B4769AD28DB270F00CCD312 /* XPHomePartyNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4769AC28DB270F00CCD312 /* XPHomePartyNavView.m */; }; 9B4D148127E485EB000AA0C1 /* XPRoomTrumpetView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4D148027E485EB000AA0C1 /* XPRoomTrumpetView.m */; }; 9B5BF8A827E1BED1005DD346 /* Api+RoomTrumpet.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B5BF8A727E1BED1005DD346 /* Api+RoomTrumpet.m */; }; @@ -1499,6 +1500,8 @@ 9B42869728C1E06B009034D2 /* XPRedPacketModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRedPacketModel.m; sourceTree = ""; }; 9B42869A28C1FD3D009034D2 /* XPOpenRedPacketCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPOpenRedPacketCell.h; sourceTree = ""; }; 9B42869B28C1FD3D009034D2 /* XPOpenRedPacketCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPOpenRedPacketCell.m; sourceTree = ""; }; + 9B46B91528DDA893000E30DB /* XPHomeRedommendCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeRedommendCollectionViewCell.h; sourceTree = ""; }; + 9B46B91628DDA893000E30DB /* XPHomeRedommendCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPHomeRedommendCollectionViewCell.m; sourceTree = ""; }; 9B4769AB28DB270F00CCD312 /* XPHomePartyNavView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomePartyNavView.h; sourceTree = ""; }; 9B4769AC28DB270F00CCD312 /* XPHomePartyNavView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPHomePartyNavView.m; sourceTree = ""; }; 9B4D147F27E485EB000AA0C1 /* XPRoomTrumpetView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomTrumpetView.h; sourceTree = ""; }; @@ -7834,6 +7837,8 @@ E8E5E19C27C36C3500F457D8 /* XPHomeMenuTableViewCell.m */, E8E5E19527C36BE700F457D8 /* XPHomeRecommendTableViewCell.h */, E8E5E19627C36BE700F457D8 /* XPHomeRecommendTableViewCell.m */, + 9B46B91528DDA893000E30DB /* XPHomeRedommendCollectionViewCell.h */, + 9B46B91628DDA893000E30DB /* XPHomeRedommendCollectionViewCell.m */, E8E5E19827C36C0B00F457D8 /* XPHomeHotRoomTableViewCell.h */, E8E5E19927C36C0B00F457D8 /* XPHomeHotRoomTableViewCell.m */, E8E5E1A727C3850400F457D8 /* XPHomeHotRoomCollectionViewCell.h */, @@ -9122,6 +9127,7 @@ 9BE01AF02893E31700B50299 /* NewUserRechargeModel.m in Sources */, E82325E6274CCAFA003A3332 /* XPShareInfoModel.m in Sources */, 9B32A04728881845002009D2 /* XPRoomTagListView.m in Sources */, + 9B46B91728DDA893000E30DB /* XPHomeRedommendCollectionViewCell.m in Sources */, 189DD55A26DE39D200AB55B1 /* BaseMvpPresenter.m in Sources */, E83ABEF9280EAF3F00322EE4 /* MessageContentOpenLiveView.m in Sources */, E8F9168E27ECA69500F10D8F /* HomeLittleGameRoomModel.m in Sources */, diff --git a/xplan-ios/Assets.xcassets/Home/home_menu_friend.imageset/Contents.json b/xplan-ios/Assets.xcassets/Home/home_menu_friend.imageset/Contents.json new file mode 100644 index 00000000..58cffb1b --- /dev/null +++ b/xplan-ios/Assets.xcassets/Home/home_menu_friend.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_menu_friend@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_menu_friend@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/xplan-ios/Assets.xcassets/Home/home_menu_friend.imageset/home_menu_friend@2x.png b/xplan-ios/Assets.xcassets/Home/home_menu_friend.imageset/home_menu_friend@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1a87c669ac11490749456f0c2d97559d4fcbd85e GIT binary patch literal 8829 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 G4ER5oQctn~ literal 0 HcmV?d00001 diff --git a/xplan-ios/Assets.xcassets/Home/home_menu_game.imageset/Contents.json b/xplan-ios/Assets.xcassets/Home/home_menu_game.imageset/Contents.json new file mode 100644 index 00000000..55aada26 --- /dev/null +++ b/xplan-ios/Assets.xcassets/Home/home_menu_game.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_menu_game@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_menu_game@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/xplan-ios/Assets.xcassets/Home/home_menu_game.imageset/home_menu_game@2x.png b/xplan-ios/Assets.xcassets/Home/home_menu_game.imageset/home_menu_game@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ad3e9f689dbcee2de1324150f46594148c5e7f7f GIT binary patch literal 8358 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 literal 0 HcmV?d00001 diff --git a/xplan-ios/Assets.xcassets/Home/home_menu_game.imageset/home_menu_game@3x.png b/xplan-ios/Assets.xcassets/Home/home_menu_game.imageset/home_menu_game@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..7ffbcb43e2693c5fe567fb015882750125f3bd3c GIT binary patch literal 14967 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 3) { _menuList = [array subarrayWithRange:NSMakeRange(0, 3)]; } - - for (int i = 0; i< _menuList.count; i++) { - NetImageView * imageView = [self.menuViewList objectAtIndex:i]; - HomeMenuInfoModel * menuInfoModel = [_menuList objectAtIndex:i]; - imageView.imageUrl = menuInfoModel.icon; - } } - (NetImageView *)firstMenuView { if (!_firstMenuView) { _firstMenuView = [[NetImageView alloc] init]; _firstMenuView.userInteractionEnabled = YES; - _firstMenuView.contentMode = UIViewContentModeScaleAspectFill; + _firstMenuView.contentMode = UIViewContentModeScaleAspectFit; + _firstMenuView.image = [UIImage imageNamed:@"home_menu_live"]; _firstMenuView.layer.masksToBounds = YES; _firstMenuView.tag = 1000; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapMenuRecognizer:)]; @@ -102,8 +99,8 @@ if (!_secondMenuView) { _secondMenuView = [[NetImageView alloc] init]; _secondMenuView.userInteractionEnabled = YES; - _secondMenuView.image = [UIImage imageNamed:@"home_recommend_icon"]; - _secondMenuView.contentMode = UIViewContentModeScaleAspectFill; + _secondMenuView.image = [UIImage imageNamed:@"home_menu_friend"]; + _secondMenuView.contentMode = UIViewContentModeScaleAspectFit; _secondMenuView.layer.masksToBounds = YES; _secondMenuView.tag = 1001; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapMenuRecognizer:)]; @@ -116,8 +113,8 @@ if (!_thirdMenuView) { _thirdMenuView = [[NetImageView alloc] init]; _thirdMenuView.userInteractionEnabled = YES; - _thirdMenuView.image = [UIImage imageNamed:@"home_recommend_icon"]; - _thirdMenuView.contentMode = UIViewContentModeScaleAspectFill; + _thirdMenuView.image = [UIImage imageNamed:@"home_menu_game"]; + _thirdMenuView.contentMode = UIViewContentModeScaleAspectFit; _thirdMenuView.layer.masksToBounds = YES; _thirdMenuView.tag = 1002; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapMenuRecognizer:)]; @@ -132,7 +129,7 @@ _stackView.axis = UILayoutConstraintAxisHorizontal; _stackView.distribution = UIStackViewDistributionFill; _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 4; + _stackView.spacing = 9; } return _stackView; } diff --git a/xplan-ios/Main/Home/View/Cell/XPHomeRecommendTableViewCell.m b/xplan-ios/Main/Home/View/Cell/XPHomeRecommendTableViewCell.m index 5d359d79..3cbe080b 100644 --- a/xplan-ios/Main/Home/View/Cell/XPHomeRecommendTableViewCell.m +++ b/xplan-ios/Main/Home/View/Cell/XPHomeRecommendTableViewCell.m @@ -11,23 +11,13 @@ ///Tool #import "XPMacro.h" ///View -#import "XPHomeRecommendListView.h" +#import "XPHomeRedommendCollectionViewCell.h" -@interface XPHomeRecommendTableViewCell () -///第一个 大的 -@property (nonatomic,strong) XPHomeRecommendListView *firstView; -///第二个 小的 -@property (nonatomic,strong) XPHomeRecommendListView *secondView; -///第三个 小的 -@property (nonatomic,strong) XPHomeRecommendListView *thirdView; -///第四个 小的 -@property (nonatomic,strong) XPHomeRecommendListView *fourthView; -///第五个 小的 -@property (nonatomic,strong) XPHomeRecommendListView *fiftView; -///第六个 小的 -@property (nonatomic,strong) XPHomeRecommendListView *sixView; -@property (nonatomic,strong) NSArray *viewList; +@interface XPHomeRecommendTableViewCell () + +@property (nonatomic, strong) UICollectionView *collectionView; + @end @implementation XPHomeRecommendTableViewCell @@ -44,54 +34,16 @@ - (void)initSubViews { self.backgroundColor = [UIColor clearColor]; self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.firstView]; - [self.contentView addSubview:self.secondView]; - [self.contentView addSubview:self.thirdView]; - [self.contentView addSubview:self.fourthView]; - [self.contentView addSubview:self.fiftView]; - [self.contentView addSubview:self.sixView]; - self.viewList = @[self.firstView, self.secondView, self.thirdView,self.fourthView, self.fiftView, self.sixView]; + [self.contentView addSubview:self.collectionView]; } - (void)initSubViewConstraints { - CGFloat spaceWidth = 11 * kScreenScale; - CGFloat miniWidth = (KScreenWidth - 30 - spaceWidth * 2) / 3.0; - CGFloat bigWidth = miniWidth * 2 + spaceWidth; - [self.firstView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(bigWidth, bigWidth)); - make.left.mas_equalTo(self.contentView).offset(15); - make.top.mas_equalTo(self.contentView); - }]; - - [self.secondView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(miniWidth, miniWidth)); - make.left.mas_equalTo(self.firstView.mas_right).offset(spaceWidth); - make.top.mas_equalTo(self.contentView); - }]; - - [self.thirdView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.left.mas_equalTo(self.secondView); - make.top.mas_equalTo(self.secondView.mas_bottom).offset(spaceWidth); - }]; - - [self.fourthView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(self.secondView); - make.left.mas_equalTo(self.firstView); - make.top.mas_equalTo(self.firstView.mas_bottom).offset(spaceWidth); - }]; - - [self.fiftView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(self.secondView); - make.top.mas_equalTo(self.fourthView); - make.left.mas_equalTo(self.fourthView.mas_right).offset(spaceWidth); - }]; - - [self.sixView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(self.secondView); - make.left.mas_equalTo(self.fiftView.mas_right).offset(spaceWidth); - make.top.mas_equalTo(self.fourthView); + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.bottom.mas_equalTo(self.contentView); }]; } + #pragma mark - Event Response - (void)tapRecognizer:(UITapGestureRecognizer *)tap { NSInteger index = tap.view.tag - 1001; @@ -103,91 +55,56 @@ } } +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + return CGSizeMake(100 * kScreenScale, 100 * kScreenScale); +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.recommendList.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPHomeRedommendCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPHomeRedommendCollectionViewCell class]) forIndexPath:indexPath]; + HomeRecommendRoomModel * info = [self.recommendList objectAtIndex:indexPath.row]; + cell.recommendRoomInfo = info; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (self.recommendList.count > 0) { + HomeRecommendRoomModel * recommend = [self.recommendList objectAtIndex:indexPath.row]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPHomeRecommendTableViewCell:didClickItem:)]) { + [self.delegate xPHomeRecommendTableViewCell:self didClickItem:recommend]; + } + } +} + #pragma mark - Getters And Setters - (void)setRecommendList:(NSArray *)recommendList { _recommendList = recommendList; - if (_recommendList.count > 6) { - _recommendList = [_recommendList subarrayWithRange:NSMakeRange(0, 6)]; - } - for (int i = 0; i < self.viewList.count; i++) { - XPHomeRecommendListView * recommendView = [self.viewList objectAtIndex:i]; - if (i < _recommendList.count) { - HomeRecommendRoomModel * recommend = [_recommendList objectAtIndex:i]; - recommendView.recommendRoomInfo = recommend; - } else { - recommendView.recommendRoomInfo = nil; - } - } + [self.collectionView reloadData]; } -- (XPHomeRecommendListView *)firstView { - if (!_firstView) { - _firstView = [[XPHomeRecommendListView alloc] init]; - _firstView.isLarge = YES; - _firstView.tag = 1001; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognizer:)]; - [_firstView addGestureRecognizer:tap]; - } - return _firstView; +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 8 * kScreenScale; + layout.minimumInteritemSpacing = 0; + layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.tag = 1001; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + _collectionView.showsHorizontalScrollIndicator = NO; + [_collectionView registerClass:[XPHomeRedommendCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPHomeRedommendCollectionViewCell class])]; + } + return _collectionView; } -- (XPHomeRecommendListView *)secondView { - if (!_secondView) { - _secondView = [[XPHomeRecommendListView alloc] init]; - _secondView.isLarge = NO; - _secondView.tag = 1002; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognizer:)]; - [_secondView addGestureRecognizer:tap]; - } - return _secondView; -} - -- (XPHomeRecommendListView *)thirdView { - if (!_thirdView) { - _thirdView = [[XPHomeRecommendListView alloc] init]; - _thirdView.isLarge = NO; - _thirdView.tag = 1003; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognizer:)]; - [_thirdView addGestureRecognizer:tap]; - } - return _thirdView; -} - -- (XPHomeRecommendListView *)fourthView { - if (!_fourthView) { - _fourthView = [[XPHomeRecommendListView alloc] init]; - _fourthView.isLarge = NO; - _fourthView.tag = 1004; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognizer:)]; - [_fourthView addGestureRecognizer:tap]; - } - return _fourthView; -} - -- (XPHomeRecommendListView *)fiftView { - if (!_fiftView) { - _fiftView = [[XPHomeRecommendListView alloc] init]; - _fiftView.isLarge = NO; - _fiftView.tag = 1005; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognizer:)]; - [_fiftView addGestureRecognizer:tap]; - } - return _fiftView; -} - -- (XPHomeRecommendListView *)sixView { - if (!_sixView) { - _sixView = [[XPHomeRecommendListView alloc] init]; - _sixView.isLarge = NO; - _sixView.tag = 1006; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognizer:)]; - [_sixView addGestureRecognizer:tap]; - } - return _sixView; -} - - - @end diff --git a/xplan-ios/Main/Home/View/Cell/XPHomeRedommendCollectionViewCell.h b/xplan-ios/Main/Home/View/Cell/XPHomeRedommendCollectionViewCell.h new file mode 100644 index 00000000..3cf98607 --- /dev/null +++ b/xplan-ios/Main/Home/View/Cell/XPHomeRedommendCollectionViewCell.h @@ -0,0 +1,19 @@ +// +// XPHomeRedommendCollectionViewCell.h +// xplan-ios +// +// Created by GreenLand on 2022/9/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class HomeRecommendRoomModel; +@interface XPHomeRedommendCollectionViewCell : UICollectionViewCell + +@property (nonatomic,strong, nullable) HomeRecommendRoomModel *recommendRoomInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Home/View/Cell/XPHomeRedommendCollectionViewCell.m b/xplan-ios/Main/Home/View/Cell/XPHomeRedommendCollectionViewCell.m new file mode 100644 index 00000000..b996d85d --- /dev/null +++ b/xplan-ios/Main/Home/View/Cell/XPHomeRedommendCollectionViewCell.m @@ -0,0 +1,219 @@ +// +// XPHomeRedommendCollectionViewCell.m +// xplan-ios +// +// Created by GreenLand on 2022/9/23. +// + +#import "XPHomeRedommendCollectionViewCell.h" +///Third +#import +///Tool +#import "ThemeColor+Home.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "HomeRecommendRoomModel.h" + +@interface XPHomeRedommendCollectionViewCell () +///背景 +@property (nonatomic,strong) UIView * backView; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///容器 +@property (nonatomic,strong) UIView * personContainerView; +///显示🔥 +@property (nonatomic,strong) UIImageView *hotImageView; +///显示在线人数 +@property (nonatomic,strong) UILabel *numberLabel; +///名字下的阴影 +@property (nonatomic,strong) UIImageView *shadowImageView; +///显示名字 +@property (nonatomic,strong) UILabel *nickLabel; +///标签 +@property (nonatomic,strong) UIButton *tagButton; +@end + +@implementation XPHomeRedommendCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backView]; + + [self.backView addSubview:self.avatarImageView]; + [self.backView addSubview:self.shadowImageView]; + [self.backView addSubview:self.personContainerView]; + [self.backView addSubview:self.nickLabel]; + [self.backView addSubview:self.tagButton]; + + [self.personContainerView addSubview:self.hotImageView]; + [self.personContainerView addSubview:self.numberLabel]; +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.hotImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(13, 13)); + make.right.mas_equalTo(self.numberLabel.mas_left).offset(-2); + make.centerY.mas_equalTo(self.personContainerView); + }]; + + [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.personContainerView.mas_right).offset(-4); + make.centerY.mas_equalTo(self.personContainerView); + }]; + + [self.shadowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.height.mas_equalTo(48); + make.bottom.mas_equalTo(self.backView); + }]; + + [self.tagButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.mas_equalTo(self.backView); + make.size.mas_equalTo(CGSizeMake(54, 20)); + }]; + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).offset(6); + make.right.mas_equalTo(self.backView).offset(-6); + make.centerY.mas_equalTo(self.shadowImageView); + }]; + + [self.personContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.hotImageView.mas_left).offset(-4); + make.height.mas_equalTo(16); + make.top.mas_equalTo(self.backView).offset(4); + make.right.mas_equalTo(self.backView).offset(-4); + }]; + + [self.shadowImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(28); + }]; +} + + +#pragma mark - Getters And Setters +- (void)setRecommendRoomInfo:(HomeRecommendRoomModel *)recommendRoomInfo { + _recommendRoomInfo = recommendRoomInfo; + if (_recommendRoomInfo) { + self.avatarImageView.imageUrl = _recommendRoomInfo.avatar; + self.numberLabel.text = [NSString stringWithFormat:@"%ld", _recommendRoomInfo.onlineNum]; + self.nickLabel.text = _recommendRoomInfo.title; + self.personContainerView.hidden = NO; + self.tagButton.hidden = NO; + if (_recommendRoomInfo.crossPking) { + [self.tagButton setTitle:@"PK中" forState:UIControlStateNormal]; + } else { + if (_recommendRoomInfo.iconContent.length > 0) { + [self.tagButton setTitle:_recommendRoomInfo.iconContent forState:UIControlStateNormal]; + } else { + self.tagButton.hidden = YES; + } + } + + } else { + self.avatarImageView.image = [UIImage imageNamed:@"home_recommend_room_placeholder"]; + self.nickLabel.text = @"虚位以待"; + self.personContainerView.hidden = YES; + self.tagButton.hidden = YES; + } +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [UIColor clearColor]; + _backView.layer.masksToBounds = YES; + _backView.layer.cornerRadius = 8; + _backView.layer.shadowColor = UIColorRGBAlpha(0xE5E5F2, 0.34).CGColor; + _backView.layer.shadowOffset = CGSizeMake(3, 3); + } + return _backView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 8; + } + return _avatarImageView; +} + +- (UIButton *)tagButton { + if (!_tagButton) { + _tagButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_tagButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _tagButton.titleLabel.font = [UIFont systemFontOfSize:10]; + [_tagButton setBackgroundImage:[UIImage imageNamed:@"home_recommend_tag_bg"] forState:UIControlStateNormal]; + } + return _tagButton; +} + +- (UIView *)personContainerView { + if (!_personContainerView) { + _personContainerView = [[UIView alloc] init]; + _personContainerView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.29]; + _personContainerView.layer.masksToBounds = YES; + _personContainerView.layer.cornerRadius = 8; + } + return _personContainerView; +} + +- (UIImageView *)hotImageView { + if (!_hotImageView) { + _hotImageView = [[UIImageView alloc] init]; + _hotImageView.userInteractionEnabled = YES; + _hotImageView.image = [UIImage imageNamed:@"room_like_collect_room_hot"]; + } + return _hotImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont boldSystemFontOfSize:12]; + _nickLabel.textColor = [UIColor whiteColor]; + _nickLabel.textAlignment = NSTextAlignmentCenter; + } + return _nickLabel; +} + +- (UILabel *)numberLabel { + if (!_numberLabel) { + _numberLabel = [[UILabel alloc] init]; + _numberLabel.font = [UIFont systemFontOfSize:9]; + _numberLabel.textColor = [UIColor whiteColor]; + } + return _numberLabel; +} + +- (UIImageView *)shadowImageView { + if (!_shadowImageView) { + _shadowImageView = [[UIImageView alloc] init]; + _shadowImageView.userInteractionEnabled = YES; + _shadowImageView.image = [UIImage imageNamed:@"home_recommend_nick_shadow_bg"]; + } + return _shadowImageView; +} + +@end diff --git a/xplan-ios/Main/Home/View/SubViews/XPHomeRecommendHeaderView.m b/xplan-ios/Main/Home/View/SubViews/XPHomeRecommendHeaderView.m index cc227cb3..0ef5f018 100644 --- a/xplan-ios/Main/Home/View/SubViews/XPHomeRecommendHeaderView.m +++ b/xplan-ios/Main/Home/View/SubViews/XPHomeRecommendHeaderView.m @@ -32,8 +32,8 @@ #import "XPRoomViewController.h" #define bannerHeight 140 -#define menuHeight (KScreenWidth - 30 - 8) * 177 / (176 + 85 + 83) * ((CGFloat)60 / (CGFloat) 177) -#define recommendHeight (230 + 11 +108) * kScreenScale +#define menuHeight ((KScreenWidth - 30 - 18) / 3 * 74 / 111) +#define recommendHeight 100 * kScreenScale #define hotRoomHeight 117 * kScreenScale #define sectionHeight 50 UIKIT_EXTERN NSString * kHomeMoreScrollPageKey;