用 page view controller 来作为新的父组件
This commit is contained in:
eggmanQQQ
2024-06-18 17:38:13 +08:00
parent 9e156c223f
commit daf1e2d2cd
8 changed files with 273 additions and 40 deletions

View File

@@ -523,6 +523,8 @@
541DD9552C1EDEFB00B616C4 /* XPHomePagingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 541DD9542C1EDEFB00B616C4 /* XPHomePagingViewController.m */; };
545888332C1AFFB500897585 /* XPRoomPKPanelView.m in Sources */ = {isa = PBXBuildFile; fileRef = 545888322C1AFFB500897585 /* XPRoomPKPanelView.m */; };
545888362C1C306B00897585 /* XPRoomPKPaneAvatarView.m in Sources */ = {isa = PBXBuildFile; fileRef = 545888352C1C306B00897585 /* XPRoomPKPaneAvatarView.m */; };
54C3895C2C215F5100FD47B1 /* XPHomeMineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C3895B2C215F5100FD47B1 /* XPHomeMineViewController.m */; };
54C3895F2C2189DD00FD47B1 /* XPHomeMinePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C3895E2C2189DD00FD47B1 /* XPHomeMinePresenter.m */; };
73FFADDC93E195344047A2EC /* Pods_YuMi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CACF623970097D653132D69A /* Pods_YuMi.framework */; };
9B0086C627BA392B0032BD2B /* AnchorStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C527BA392B0032BD2B /* AnchorStageView.m */; };
9B0086CA27BA4F570032BD2B /* AnchorMicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C927BA4F570032BD2B /* AnchorMicroView.m */; };
@@ -2566,6 +2568,10 @@
545888322C1AFFB500897585 /* XPRoomPKPanelView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKPanelView.m; sourceTree = "<group>"; };
545888342C1C306B00897585 /* XPRoomPKPaneAvatarView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKPaneAvatarView.h; sourceTree = "<group>"; };
545888352C1C306B00897585 /* XPRoomPKPaneAvatarView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKPaneAvatarView.m; sourceTree = "<group>"; };
54C3895A2C215F5100FD47B1 /* XPHomeMineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeMineViewController.h; sourceTree = "<group>"; };
54C3895B2C215F5100FD47B1 /* XPHomeMineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPHomeMineViewController.m; sourceTree = "<group>"; };
54C3895D2C2189DD00FD47B1 /* XPHomeMinePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeMinePresenter.h; sourceTree = "<group>"; };
54C3895E2C2189DD00FD47B1 /* XPHomeMinePresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPHomeMinePresenter.m; sourceTree = "<group>"; };
7DB00EC07F1D0ADFF900B38D /* Pods-YuMi.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YuMi.debug.xcconfig"; path = "Target Support Files/Pods-YuMi/Pods-YuMi.debug.xcconfig"; sourceTree = "<group>"; };
9B0086C427BA392B0032BD2B /* AnchorStageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnchorStageView.h; sourceTree = "<group>"; };
9B0086C527BA392B0032BD2B /* AnchorStageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AnchorStageView.m; sourceTree = "<group>"; };
@@ -9424,6 +9430,8 @@
E87E62662A3F571C002F68C9 /* XPHomeContainerPresenter.m */,
E87E62792A3F5A0D002F68C9 /* XPNewHomeRecommendPresenter.h */,
E87E627A2A3F5A0D002F68C9 /* XPNewHomeRecommendPresenter.m */,
54C3895D2C2189DD00FD47B1 /* XPHomeMinePresenter.h */,
54C3895E2C2189DD00FD47B1 /* XPHomeMinePresenter.m */,
);
path = Presenter;
sourceTree = "<group>";
@@ -9440,6 +9448,8 @@
E87E62582A3F560A002F68C9 /* XPHomeRecommendViewController.m */,
E87E625B2A3F5622002F68C9 /* XPNewHomeViewController.h */,
E87E625C2A3F5622002F68C9 /* XPNewHomeViewController.m */,
54C3895A2C215F5100FD47B1 /* XPHomeMineViewController.h */,
54C3895B2C215F5100FD47B1 /* XPHomeMineViewController.m */,
239BEED92AA1E058005CDA94 /* PIHoemCategoryTitleView.h */,
239BEEDA2AA1E058005CDA94 /* PIHoemCategoryTitleView.m */,
23B8D8DC2B860B8800CA472F /* PIHoemCategoryCollectionView.h */,
@@ -11428,6 +11438,7 @@
9BCB99A628F582EC00466D64 /* XPMineCollectRoomEditCell.m in Sources */,
E8E70D7E26F2F19D00F03460 /* Api+Mine.m in Sources */,
E85E7B3B2A4EB0D300B6D00A /* XPGuildSearchSuperAdminTableViewCell.m in Sources */,
54C3895F2C2189DD00FD47B1 /* XPHomeMinePresenter.m in Sources */,
E8751E6E28A64F990056EF44 /* XPSailingEmptyTableViewCell.m in Sources */,
E87E625A2A3F560B002F68C9 /* XPHomeRecommendViewController.m in Sources */,
E8950189282CFFB1007E459A /* XPMonentsLayoutConfig.m in Sources */,
@@ -12061,6 +12072,7 @@
236B2E432AA07D06003967A8 /* NSString+RW.m in Sources */,
239D0FC92C045F92002977CE /* MSRoomGameVC.m in Sources */,
E85E7B172A4EB0D200B6D00A /* ClanMemberDetailInfoModel.m in Sources */,
54C3895C2C215F5100FD47B1 /* XPHomeMineViewController.m in Sources */,
9B044DA0282D32F700DE4859 /* MicroInviteExtModel.m in Sources */,
E8D7D74B282BA1EC0007D7BD /* XPMonentsTableViewCell.m in Sources */,
E8D34D5A28082357009C4835 /* UserGiftWallInfoModel.m in Sources */,

View File

@@ -0,0 +1,18 @@
//
// XPHomeMinePresenter.h
// YuMi
//
// Created by P on 2024/6/18.
//
#import "BaseMvpPresenter.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPHomeMinePresenter : BaseMvpPresenter
//- (void)getMy
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,12 @@
//
// XPHomeMinePresenter.m
// YuMi
//
// Created by P on 2024/6/18.
//
#import "XPHomeMinePresenter.h"
@implementation XPHomeMinePresenter
@end

View File

@@ -100,10 +100,8 @@
make.trailing.mas_equalTo(-kGetScaleWidth(8));
make.bottom.mas_equalTo(-kGetScaleWidth(10));
make.height.mas_equalTo(kGetScaleWidth(17));
}];
[self.heatGifView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(kGetScaleWidth(14));
make.height.mas_equalTo(kGetScaleWidth(14));
@@ -121,7 +119,6 @@
make.leading.trailing.equalTo(self.nameView);
make.height.mas_equalTo(kGetScaleWidth(17));
make.top.equalTo(self.nameView.mas_bottom).mas_offset(kGetScaleWidth(5));
}];
[self.pkImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(kGetScaleWidth(23));
@@ -148,7 +145,6 @@
[self.tagavatarView mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(width);
}];
}];
_subView.text = _roomInfo.introduction;
@@ -163,7 +159,6 @@
}
}
for (int i = 0; i < 5; i++) {
NetImageView *iconView = [self.contentView viewWithTag:100 + i];
if(i < _roomInfo.micUsers.count){

View File

@@ -0,0 +1,16 @@
//
// XPHomeMineViewController.h
// YuMi
//
// Created by P on 2024/6/18.
//
#import "MvpViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface XPHomeMineViewController : MvpViewController
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,32 @@
//
// XPHomeMineViewController.m
// YuMi
//
// Created by P on 2024/6/18.
//
#import "XPHomeMineViewController.h"
#import "XPHomeMinePresenter.h"
@interface XPHomeMineViewController ()
@end
@implementation XPHomeMineViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (BOOL)isHiddenNavBar {
return YES;
}
- (XPHomeMinePresenter *)createPresenter {
return [[XPHomeMinePresenter alloc] init];
}
@end

View File

@@ -7,9 +7,22 @@
#import "XPHomePagingViewController.h"
@interface XPHomePagingViewController ()
#import "XPNewHomeViewController.h"
#import "XPHomeMineViewController.h"
#import "XPRoomSearchContainerViewController.h"
@property (nonatomic, strong) UIPageViewController pageContainer;
@interface XPHomePagingViewController () <UIPageViewControllerDelegate, UIPageViewControllerDataSource>
@property (nonatomic, strong) UIView *topControlView;
@property (nonatomic, strong) UIButton *mineButton;
@property (nonatomic, strong) UIButton *recommendButton;
@property (nonatomic, strong) UIPageViewController *pageContainer;
@property (nonatomic, strong) NSArray *viewControllers; //
@property (nonatomic, assign) NSUInteger currentIndex; //
@property (nonatomic, strong) XPNewHomeViewController *recommendVC;
@property (nonatomic, strong) XPHomeMineViewController *mineVC;
@end
@@ -17,17 +30,151 @@
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self setup];
}
/*
#pragma mark - Navigation
- (void)setup {
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
self.view.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#F3F5FA"];
[self setupTopTheme];
[self setupTopControl];
_pageContainer = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:nil];
_pageContainer.delegate = self;
_pageContainer.dataSource = self;
_recommendVC = [[XPNewHomeViewController alloc] init];
_mineVC = [[XPHomeMineViewController alloc] init];
_viewControllers = @[_mineVC, _recommendVC];
[self didTapRecommendButton];
// [self didTapMineButton];
[self addChildViewController:_pageContainer];
[self.view addSubview:_pageContainer.view];
[self.pageContainer.view mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.bottom.right.mas_equalTo(self.view);
make.top.mas_equalTo(self.topControlView.mas_bottom);
}];
[self.pageContainer didMoveToParentViewController:self];
}
*/
- (void)setupTopTheme {
UIImageView *theme = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, kGetScaleWidth(223))];
// home_top_bg
theme.image = [UIImage imageNamed:@"home_top_bg"];
theme.contentMode = UIViewContentModeScaleAspectFill;
[self.view addSubview:theme];
}
- (void)setupTopControl {
// TODO: StackView baseline
_topControlView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 44+52)];
_topControlView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.4];
[self.view addSubview:_topControlView];
_mineButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_mineButton setTitle:@"mine" forState:UIControlStateNormal];
[_mineButton addTarget:self
action:@selector(didTapMineButton)
forControlEvents:UIControlEventTouchUpInside];
[_topControlView addSubview:_mineButton];
[_mineButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(self.topControlView).offset(-8);
make.left.mas_equalTo(self.topControlView).offset(8);
}];
_recommendButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_recommendButton setTitle:@"recommend" forState:UIControlStateNormal];
[_recommendButton addTarget:self
action:@selector(didTapRecommendButton)
forControlEvents:UIControlEventTouchUpInside];
[_topControlView addSubview:_recommendButton];
[_recommendButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(self.topControlView).offset(-8);
make.left.mas_equalTo(_mineButton.mas_right).offset(8);
}];
UIButton *searchButton = [UIButton buttonWithType:UIButtonTypeCustom];
[searchButton setTitle:@"搜索" forState:UIControlStateNormal];
[searchButton addTarget:self
action:@selector(didTapSearchButton)
forControlEvents:UIControlEventTouchUpInside];
[_topControlView addSubview:searchButton];
[searchButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(self.topControlView).offset(-8);
make.right.mas_equalTo(self.topControlView).offset(-8);
}];
}
- (void)displayMineTab {
[_mineButton.titleLabel setFont:[UIFont systemFontOfSize:21 weight:UIFontWeightBold]];
[_recommendButton.titleLabel setFont:[UIFont systemFontOfSize:18 weight:UIFontWeightBold]];
[_mineButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[_recommendButton setTitleColor:[UIColor colorWithWhite:1 alpha:0.6] forState:UIControlStateNormal];
}
- (void)displayRecommendTab {
[_mineButton.titleLabel setFont:[UIFont systemFontOfSize:18 weight:UIFontWeightBold]];
[_recommendButton.titleLabel setFont:[UIFont systemFontOfSize:21 weight:UIFontWeightBold]];
[_recommendButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[_mineButton setTitleColor:[UIColor colorWithWhite:1 alpha:0.6] forState:UIControlStateNormal];
}
#pragma mark -
- (void)didTapMineButton {
[self.pageContainer setViewControllers:@[self.viewControllers[0]]
direction:UIPageViewControllerNavigationDirectionReverse
animated:NO
completion:nil];
[self displayMineTab];
}
- (void)didTapRecommendButton {
[self.pageContainer setViewControllers:@[self.viewControllers[1]]
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];
[self displayRecommendTab];
}
- (void)didTapSearchButton {
XPRoomSearchContainerViewController * searchVC = [[XPRoomSearchContainerViewController alloc] init];
searchVC.modalPresentationStyle = UIModalPresentationFullScreen;
[self.navigationController presentViewController:searchVC
animated:YES
completion:nil];
}
#pragma mark - UIPageViewController Delegate & DataSource
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
NSUInteger index = [self.viewControllers indexOfObject:viewController];
if (index > 0) {
return self.viewControllers[index - 1];
}
return nil;
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSUInteger index = [self.viewControllers indexOfObject:viewController];
if (index < self.viewControllers.count - 1) {
return self.viewControllers[index + 1];
}
return nil;
}
#pragma mark - UIPageViewControllerDelegate
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> *)pendingViewControllers {
//
self.currentIndex = [self.viewControllers indexOfObject:pendingViewControllers.firstObject];
if (self.currentIndex == 0) {
[self displayMineTab];
} else {
[self displayRecommendTab];
}
}
@end

View File

@@ -58,7 +58,7 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
@interface XPNewHomeViewController ()<JXPagerViewDelegate,JXPagerMainTableViewGestureDelegate,JXCategoryViewDelegate, XPHomeContainerProtocol, XPNewHomeNavViewDelegate,XPNewHomeHeadViewDelegate,XPHomeRecommendOtherRoomViewDelegate,XPHomeRecommendViewControllerDelegate>
///
@property (nonatomic,strong) UIImageView *backImageView;
//@property (nonatomic,strong) UIImageView *backImageView;
///
@property (nonatomic,strong) XPNewHomeNavView *navView;
///
@@ -89,7 +89,7 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
}
-(void)dealloc{
[[NSNotificationCenter defaultCenter]removeObserver:self];
[[NSNotificationCenter defaultCenter]removeObserver:self];
}
- (BOOL)isHiddenNavBar {
@@ -140,9 +140,9 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
- (void)initSubViews {
self.type = 0;
self.view.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#F3F5FA"];
[self.view addSubview:self.backImageView];
[self.view addSubview:self.navView];
self.view.backgroundColor = [UIColor clearColor];
// [self.view addSubview:self.backImageView];
// [self.view addSubview:self.navView];
[self.view addSubview:self.pagingView];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(openRoomNotification:) name:kOpenRoomNotification object:nil];
if([[AccountInfoStorage instance] getUid].length == 0){
@@ -231,18 +231,18 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
}
}
- (void)initSubViewConstraints {
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.trailing.top.mas_equalTo(self.view);
make.height.mas_equalTo(kGetScaleWidth(223));
}];
[self.navView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.trailing.top.mas_equalTo(self.view);
make.height.mas_equalTo(kNavigationHeight);
}];
// [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
// make.leading.trailing.top.mas_equalTo(self.view);
// make.height.mas_equalTo(kGetScaleWidth(223));
// }];
//
// [self.navView mas_makeConstraints:^(MASConstraintMaker *make) {
// make.leading.trailing.top.mas_equalTo(self.view);
// make.height.mas_equalTo(kNavigationHeight);
// }];
[self.pagingView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.navView.mas_bottom).mas_offset(kGetScaleWidth(10));
make.top.equalTo(self.view).mas_offset(kGetScaleWidth(10));
make.leading.bottom.trailing.mas_equalTo(0);
}];
}
@@ -558,15 +558,16 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
return _navView;
}
- (UIImageView *)backImageView {
if (!_backImageView) {
_backImageView = [[UIImageView alloc] init];
_backImageView.image = [UIImage imageNamed:@"home_top_bg"];
_backImageView.layer.masksToBounds = YES;
_backImageView.contentMode = UIViewContentModeScaleAspectFill;
}
return _backImageView;
}
//- (UIImageView *)backImageView {
// if (!_backImageView) {
// _backImageView = [[UIImageView alloc] init];
// _backImageView.image = [UIImage imageNamed:@"home_top_bg"];
// _backImageView.layer.masksToBounds = YES;
// _backImageView.contentMode = UIViewContentModeScaleAspectFill;
// }
// return _backImageView;
//}
- (XPNewHomeHeadView *)headView{
if(!_headView){
_headView = [[XPNewHomeHeadView alloc]initWithFrame:CGRectZero];