RQMainTabBarViewController.m 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. //
  2. // RQMainTabBarViewController.m
  3. // RQCommon
  4. //
  5. // Created by 张嵘 on 2018/11/21.
  6. // Copyright © 2018 张嵘. All rights reserved.
  7. // 主界面控制器
  8. #import "RQMainTabBarViewController.h"
  9. #import "RQBaseNavigationController.h"
  10. #import <ZFPlayer/ZFLandscapeRotationManager.h>
  11. @interface RQMainTabBarViewController ()
  12. @property (nonatomic, readonly, strong) RQMainTabBarViewModel *viewModel;
  13. @end
  14. @implementation RQMainTabBarViewController
  15. @dynamic viewModel;
  16. /// 在这里写支持的旋转方向,为了防止横屏方向,应用启动时候界面变为横屏模式
  17. - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
  18. ZFInterfaceOrientationMask orientationMask = [ZFLandscapeRotationManager supportedInterfaceOrientationsForWindow:window];
  19. if (orientationMask != ZFInterfaceOrientationMaskUnknow) {
  20. return (UIInterfaceOrientationMask)orientationMask;
  21. }
  22. UIViewController *current_VC = RQControllerHelper.currentViewController;
  23. if([current_VC isKindOfClass:[NYExaminationViewController class]]||
  24. [current_VC isKindOfClass:[NYExaminationRoomViewController class]]){
  25. return UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskPortrait;
  26. }
  27. /// 这里是非播放器VC支持的方向
  28. return UIInterfaceOrientationMaskPortrait;
  29. }
  30. #pragma mark - System
  31. - (void)viewDidLoad {
  32. [super viewDidLoad];
  33. // 初始化所有的子控制器
  34. [self rq_setupAllChildViewController];
  35. // set delegate
  36. self.tabBarController.delegate = self;
  37. }
  38. #pragma mark - Private Method
  39. - (void)rq_setupAllChildViewController {
  40. NSArray *titlesArray = @[@"考试", @"社区", @"计时",@"真人讲解", @"我的"];
  41. NSArray *imageNamesArray = @[@"考试灰",
  42. @"tabbarImg2",
  43. @"计时灰",
  44. @"真人讲解灰",
  45. @"我的灰"
  46. ];
  47. NSArray *selectedImageNamesArray = @[@"考试蓝",
  48. @"tabbarImg2",
  49. @"计时蓝",
  50. @"真人讲解蓝",
  51. @"我的蓝"
  52. ];
  53. /// 首页-考试
  54. RQBaseNavigationController *homePageNavigationController = ({
  55. RQHomePageViewController *homePageViewController = [[RQHomePageViewController alloc] initWithViewModel:self.viewModel.homePageViewModel];
  56. RQTabBarItemTagType tagType = RQTabBarItemTagTypeHomePage;
  57. /// 配置
  58. [self rq_configViewController:homePageViewController imageName:imageNamesArray[tagType] selectedImageName:selectedImageNamesArray[tagType] title:titlesArray[tagType] itemTag:tagType];
  59. /// 添加到导航栏的栈底控制器
  60. homePageViewController.hidesBottomBarWhenPushed = NO;
  61. [[RQBaseNavigationController alloc] initWithRootViewController:homePageViewController];
  62. });
  63. /// 计时
  64. RQBaseNavigationController *timePageNavigationController = ({
  65. // TimingBaseVC *timePageViewController = [[TimingBaseVC alloc] initWithViewModel:self.viewModel.timeViewModel];
  66. RQTimeViewController *timePageViewController = [[RQTimeViewController alloc] initWithViewModel:self.viewModel.timeViewModel];
  67. RQTabBarItemTagType tagType = RQTabBarItemTagTypeTime;
  68. /// 配置
  69. [self rq_configViewController:timePageViewController imageName:imageNamesArray[tagType] selectedImageName:selectedImageNamesArray[tagType] title:titlesArray[tagType] itemTag:tagType];
  70. /// 添加到导航栏的栈底控制器
  71. timePageViewController.hidesBottomBarWhenPushed = NO;
  72. [[RQBaseNavigationController alloc] initWithRootViewController:timePageViewController];
  73. });
  74. ///真人讲解
  75. RQBaseNavigationController *livideoNavigationController = ({
  76. NSIndexPath *indexPath = [NSIndexPath indexPathWithIndex:0];
  77. NYLIVideoDetailViewModel *videoDetailViewModel = [[NYLIVideoDetailViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
  78. RQVideoItemIndexKey : @(0),
  79. RQVideoItemIndexPathKey : indexPath,
  80. RQHomePageSubjectTypeKey : @(RQHomePageSubjectType_SubjectOne_LI),
  81. }];
  82. NYLIVideoDetailViewController *livideoDetailViewController = [[NYLIVideoDetailViewController alloc] initWithViewModel:videoDetailViewModel];
  83. livideoDetailViewController.tagTyp = RQTabBarItemTagTypeLi;
  84. RQTabBarItemTagType tagType = RQTabBarItemTagTypeLi;
  85. /// 配置
  86. [self rq_configViewController:livideoDetailViewController imageName:imageNamesArray[tagType] selectedImageName:selectedImageNamesArray[tagType] title:titlesArray[tagType] itemTag:tagType];
  87. /// 添加到导航栏的栈底控制器
  88. livideoDetailViewController.hidesBottomBarWhenPushed = NO;
  89. [[RQBaseNavigationController alloc] initWithRootViewController:livideoDetailViewController];
  90. });
  91. /// 我的
  92. RQBaseNavigationController *profileNavigationController = ({
  93. //#if DEBUG
  94. RQProfileViewController *profileViewController = [[RQProfileViewController alloc] initWithViewModel:self.viewModel.profileViewModel];
  95. //#else
  96. // FunctionVC *profileViewController = [[FunctionVC alloc] initWithViewModel:self.viewModel.profileViewModel];
  97. //#endif
  98. RQTabBarItemTagType tagType = RQTabBarItemTagTypeProfile;
  99. /// 配置
  100. [self rq_configViewController:profileViewController imageName:imageNamesArray[tagType] selectedImageName:selectedImageNamesArray[tagType] title:titlesArray[tagType] itemTag:tagType];
  101. profileViewController.hidesBottomBarWhenPushed = NO;
  102. [[RQBaseNavigationController alloc] initWithRootViewController:profileViewController];
  103. });
  104. /// 添加到tabBarController的子视图
  105. // self.tabBarController.viewControllers = @[homePageNavigationController, profileNavigationController];
  106. self.tabBarController.viewControllers = @[homePageNavigationController, timePageNavigationController,livideoNavigationController, profileNavigationController];//开启计时tab
  107. // if(RQ_USER_MANAGER.currentUser.stuNum){
  108. // NSLog(@"%@",RQ_USER_MANAGER.currentUser.stuNum);
  109. // if ((RQ_USER_MANAGER.isLogin&&![RQ_USER_MANAGER.currentUser.stuNum isEqualToString:@""])||
  110. // [RQ_USER_MANAGER.currentUser.loginCode isEqualToString:@"350881199205290949"]) {//已经,登录并且stunum不为空
  111. // self.tabBarController.viewControllers = @[homePageNavigationController, timePageNavigationController, profileNavigationController];//开启计时tab
  112. // }
  113. // }
  114. /// 配置栈底
  115. [RQSharedAppDelegate.navigationControllerStack pushNavigationController:homePageNavigationController];
  116. }
  117. - (void)rq_configViewController:(UIViewController *)viewController imageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName title:(NSString *)title itemTag:(RQTabBarItemTagType)tagType {
  118. UIImage *image = [[UIImage imageNamed:imageName] tint:[UIColor grayColor]];
  119. image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
  120. viewController.tabBarItem.image = image;
  121. viewController.tabBarItem.tag = tagType;
  122. UIImage *selectedImage = [[UIImage imageNamed:selectedImageName] tint:RQ_MAIN_COLOR];
  123. selectedImage = [selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
  124. viewController.tabBarItem.selectedImage = selectedImage;
  125. viewController.tabBarItem.title = title;
  126. NSDictionary *normalAttr = @{NSForegroundColorAttributeName:RQ_MAIN_TEXT_COLOR_2,
  127. NSFontAttributeName:RQRegularFont_15};
  128. NSDictionary *selectedAttr = @{NSForegroundColorAttributeName:RQ_MAIN_COLOR,
  129. NSFontAttributeName:RQRegularFont_15};
  130. [viewController.tabBarItem setTitleTextAttributes:normalAttr forState:UIControlStateNormal];
  131. [viewController.tabBarItem setTitleTextAttributes:selectedAttr forState:UIControlStateSelected];
  132. [viewController.tabBarItem setTitlePositionAdjustment:UIOffsetMake(0, 0)];
  133. [viewController.tabBarItem setImageInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
  134. }
  135. #pragma mark - UITabBarControllerDelegate
  136. - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
  137. if ([viewController.tabBarItem.title isEqualToString:@"我的"] || [viewController.tabBarItem.title isEqualToString:@"计时"]) {
  138. return RQ_USER_MANAGER.isShouldLogin;
  139. } else {
  140. return YES;
  141. }
  142. }
  143. - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
  144. NSLog(@"viewController %@ %zd",viewController,viewController.tabBarItem.tag);
  145. [RQSharedAppDelegate.navigationControllerStack popNavigationController];
  146. [RQSharedAppDelegate.navigationControllerStack pushNavigationController:(UINavigationController *)viewController];
  147. if ([viewController.tabBarItem.title isEqualToString:@"计时"] && [RQ_USER_MANAGER isQzVideo] && !RQ_COMMON_MANAGER.isQzLook) {
  148. RQNewFeatureViewModel *newFeatureViewModel = [[RQNewFeatureViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{RQViewCommonValueKey : @"quanzhou"}];
  149. [RQ_APPDELEGATE.services presentViewModel:newFeatureViewModel animated:YES completion:^{
  150. }];
  151. }
  152. }
  153. @end