RQNewFeatureViewController.m 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. //
  2. // RQNewFeatureViewController.m
  3. // RQCommon
  4. //
  5. // Created by 张嵘 on 2018/11/23.
  6. // Copyright © 2018 张嵘. All rights reserved.
  7. //
  8. #import "RQNewFeatureViewController.h"
  9. #import "AppDelegate.h"
  10. @interface RQNewFeatureViewController () <UIScrollViewDelegate>
  11. /// 滚动视图
  12. @property (nonatomic, readwrite, strong) UIScrollView *scrollView;
  13. /// 分页控件
  14. @property (nonatomic, readwrite, strong) UIPageControl *pageControl;
  15. /// 开始按钮
  16. @property (nonatomic, readwrite, strong) UIButton *startButton;
  17. /// viewModel
  18. @property (nonatomic, readwrite, strong) RQNewFeatureViewModel *viewModel;
  19. @end
  20. @implementation RQNewFeatureViewController
  21. @dynamic viewModel;
  22. - (void)viewDidLoad {
  23. [super viewDidLoad];
  24. [self setupUI];
  25. }
  26. #pragma mark - 监听方法
  27. /// 点击开始按钮
  28. - (void)clickStartButton {
  29. [[NSNotificationCenter defaultCenter] postNotificationName:RQSwitchRootViewControllerNotification object:nil userInfo:@{RQSwitchRootViewControllerUserInfoKey:@(RQSwitchRootViewControllerFromTypeNewFeature)}];
  30. }
  31. #pragma mark - UIScrollViewDelegate
  32. /// UIScrollView 停止滚动
  33. - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
  34. // 当前页数
  35. self.pageControl.currentPage = scrollView.contentOffset.x / scrollView.bounds.size.width;
  36. }
  37. #pragma mark - 设置界面
  38. - (void)setupUI {
  39. [self _prepareScrollView];
  40. // [self _preparePageControl];
  41. [self _prepareLastPage];
  42. }
  43. /// 准备最后一页控件
  44. - (void)_prepareLastPage {
  45. UIImageView *imageView = self.scrollView.subviews.lastObject;
  46. imageView.userInteractionEnabled = YES;
  47. [imageView addSubview:self.startButton];
  48. [self.startButton mas_makeConstraints:^(MASConstraintMaker *make) {
  49. make.centerX.equalTo(imageView);
  50. make.bottom.mas_equalTo(-RQ_Fit_Vertical(40.0));
  51. make.size.mas_offset(CGSizeMake(RQ_SCREEN_WIDTH / 3.0, RQ_Fit_Vertical(40.0)));
  52. }];
  53. }
  54. /// 准备分页控件
  55. - (void)_preparePageControl {
  56. [self.view addSubview:self.pageControl];
  57. self.pageControl.numberOfPages = 3;
  58. self.pageControl.currentPage = 0;
  59. [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) {
  60. make.centerX.equalTo(self.view);
  61. make.bottom.equalTo(self.view).offset(-80);
  62. }];
  63. }
  64. /// 准备 UIScrollView
  65. - (void)_prepareScrollView {
  66. [self.view addSubview:self.scrollView];
  67. self.scrollView.frame = self.view.bounds;
  68. // 添加图像视图
  69. for (int i = 0; i < 3; ++i) {
  70. UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"NewFutureImage0%d", i + 1]];
  71. UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
  72. // 设置大小
  73. imageView.frame = CGRectOffset(self.view.bounds, i * self.view.bounds.size.width, 0);
  74. [self.scrollView addSubview:imageView];
  75. }
  76. // 设置 contentSize
  77. self.scrollView.contentSize = CGRectInset(self.view.bounds, -1.0 * self.view.bounds.size.width, 0).size;
  78. /// 适配 iOS11
  79. RQAdjustsScrollViewInsets_Never(self.scrollView);
  80. }
  81. #pragma mark - 懒加载控件
  82. - (UIScrollView *)scrollView {
  83. if (_scrollView == nil) {
  84. _scrollView = [[UIScrollView alloc] init];
  85. _scrollView.showsHorizontalScrollIndicator = NO;
  86. _scrollView.showsVerticalScrollIndicator = NO;
  87. _scrollView.bounces = NO;
  88. _scrollView.pagingEnabled = YES;
  89. _scrollView.delegate = self;
  90. }
  91. return _scrollView;
  92. }
  93. - (UIPageControl *)pageControl {
  94. if (_pageControl == nil) {
  95. _pageControl = [[UIPageControl alloc] init];
  96. _pageControl.pageIndicatorTintColor = [UIColor blackColor];
  97. _pageControl.currentPageIndicatorTintColor = [UIColor orangeColor];
  98. // 提示:需要禁止用户交互,否则用户点击小圆点,会移动,但是页面不会变化
  99. _pageControl.userInteractionEnabled = NO;
  100. }
  101. return _pageControl;
  102. }
  103. - (UIButton *)startButton {
  104. if (_startButton == nil) {
  105. _startButton = [UIButton buttonWithType:UIButtonTypeCustom];
  106. [_startButton setTitle:@"进入主页" forState:UIControlStateNormal];
  107. [_startButton setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];
  108. [_startButton setBackgroundColor:UIColor.clearColor forState:UIControlStateNormal];
  109. [_startButton addTarget:self action:@selector(clickStartButton) forControlEvents:UIControlEventTouchUpInside];
  110. }
  111. return _startButton;
  112. }
  113. @end