暫無描述

FKAgeGuideController.m 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. //
  2. // FKTypeGuideController.m
  3. // FirstLink
  4. //
  5. // Created by jack on 16/4/26.
  6. // Copyright © 2016年 FirstLink. All rights reserved.
  7. //
  8. #import "FKAgeGuideController.h"
  9. #import "FKCategoryGuideController.h"
  10. #import "FKGuideReform.h"
  11. #import "FKGuideRequest.h"
  12. #import "FKGuideTypeItem.h"
  13. #import "FKGuideManager.h"
  14. static NSString *FK_TYPE_COLLECTION_CELL_IDENTIFY = @"FK_TYPE_COLLECTION_CELL_IDENTIFY";
  15. #define FK_TYPE_LIST_REQ 666
  16. @interface FKAgeGuideController ()
  17. @property (nonatomic, assign) kSexType sexType;
  18. @property (nonatomic, strong) UILabel *titleLabel;
  19. @property (nonatomic, strong) UILabel *indicatorLabel;
  20. @property (nonatomic, strong) UIImageView *iconImgView;
  21. @property (nonatomic, strong) UIImageView *rightArrowImgView;
  22. @property (nonatomic, strong) UIButton *sevenBtn;
  23. @property (nonatomic, strong) UIButton *eightBtn;
  24. @property (nonatomic, strong) UIButton *nineBtn;
  25. @property (nonatomic, strong) UIButton *cancelBtn;
  26. @property (nonatomic, strong) UIPageControl *pageControl;
  27. @property (nonatomic, strong) UIPanGestureRecognizer *panGesture;
  28. @property (nonatomic, strong) FKPreferinfoItem *infoItem;
  29. @property (nonatomic, copy) preferFinish finishBlock;
  30. @property (nonatomic, copy) preferCancel cancelBlock;
  31. @end
  32. @implementation FKAgeGuideController
  33. - (instancetype)initWithInfoItem:(FKPreferinfoItem *)infoItem
  34. finish:(preferFinish)finish
  35. cancel:(preferCancel)cancel{
  36. if (self = [super init]) {
  37. self.infoItem = infoItem;
  38. self.finishBlock = finish;
  39. self.cancelBlock = cancel;
  40. }
  41. return self;
  42. }
  43. - (void)viewDidLoad{
  44. [super viewDidLoad];
  45. self.view.backgroundColor = UIColorFromRGB(0xf4f4f4);
  46. [self addAllSubviews];
  47. [self addPanGesture];
  48. [self configContent];
  49. [self resetPanGestureEnable];
  50. }
  51. - (void)viewWillAppear:(BOOL)animated{
  52. [super viewWillAppear:animated];
  53. // if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
  54. // self.navigationController.interactivePopGestureRecognizer.delegate = self;
  55. // }
  56. }
  57. - (void)addAllSubviews{
  58. [self.view addSubview:self.iconImgView];
  59. [self.view addSubview:self.rightArrowImgView];
  60. [self.view addSubview:self.titleLabel];
  61. [self.view addSubview:self.indicatorLabel];
  62. [self.view addSubview:self.sevenBtn];
  63. [self.view addSubview:self.eightBtn];
  64. [self.view addSubview:self.nineBtn];
  65. [self.view addSubview:self.cancelBtn];
  66. [self.view addSubview:self.pageControl];
  67. CGFloat commonMagin = 50.0f;
  68. CGFloat iconTop = 130.0f;
  69. CGFloat pageBottom = 50;
  70. CGFloat indicatorBottom = 25;
  71. if (UISCREENHEIGH <= 480){
  72. commonMagin = 20;
  73. iconTop = 90;
  74. pageBottom = 20;
  75. indicatorBottom = 15;
  76. }else if (UISCREENHEIGH <= 568){
  77. commonMagin = 30;
  78. iconTop = 110;
  79. pageBottom = 30;
  80. }
  81. [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) {
  82. make.centerX.equalTo(self.view);
  83. make.bottom.equalTo(self.view).offset(- pageBottom);
  84. }];
  85. [self.iconImgView mas_makeConstraints:^(MASConstraintMaker *make) {
  86. make.top.equalTo(self.view).offset(iconTop);
  87. make.centerX.equalTo(self.view);
  88. }];
  89. [self.indicatorLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  90. make.centerX.equalTo(self.view).offset(10);
  91. make.bottom.equalTo(self.pageControl.mas_top).offset(- indicatorBottom);
  92. }];
  93. [self.rightArrowImgView mas_makeConstraints:^(MASConstraintMaker *make) {
  94. make.right.equalTo(self.indicatorLabel.mas_left).offset(- 3);
  95. make.centerY.equalTo(self.indicatorLabel);
  96. }];
  97. [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  98. make.top.equalTo(self.iconImgView.mas_bottom).offset(18);
  99. make.centerX.equalTo(self.view);
  100. }];
  101. [self.sevenBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  102. make.top.equalTo(self.titleLabel.mas_bottom).offset(commonMagin);
  103. make.centerX.equalTo(self.view);
  104. make.size.mas_offset(CGSizeMake(170, 40));
  105. }];
  106. [self.eightBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  107. make.top.equalTo(self.sevenBtn.mas_bottom).offset(commonMagin);
  108. make.centerX.equalTo(self.view);
  109. make.size.mas_offset(CGSizeMake(170, 40));
  110. }];
  111. [self.nineBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  112. make.top.equalTo(self.eightBtn.mas_bottom).offset(commonMagin);
  113. make.centerX.equalTo(self.view);
  114. make.size.mas_offset(CGSizeMake(170, 40));
  115. }];
  116. [self.cancelBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  117. make.top.equalTo(self.view).offset(IS_IPHONE_X ? 54 : 40);
  118. make.right.equalTo(self.view).offset(- 20);
  119. make.size.mas_equalTo(CGSizeMake(49, 25.5));
  120. }];
  121. }
  122. //- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
  123. // return NO;
  124. //}
  125. #pragma mark - method
  126. - (void)configContent{
  127. if (self.infoItem) {
  128. switch (self.infoItem.ageType) {
  129. case kAgeTypeSeven:
  130. self.sevenBtn.selected = YES;
  131. break;
  132. case kAgeTypeEight:
  133. self.eightBtn.selected = YES;
  134. break;
  135. case kAgeTypeNine:
  136. self.nineBtn.selected = YES;
  137. break;
  138. default:
  139. break;
  140. }
  141. if (self.sevenBtn.selected) self.sevenBtn.backgroundColor = UIColorFromRGB(0xff6362);
  142. if (self.eightBtn.selected) self.eightBtn.backgroundColor = UIColorFromRGB(0xff6362);
  143. if (self.nineBtn.selected) self.nineBtn.backgroundColor = UIColorFromRGB(0xff6362);
  144. }
  145. }
  146. - (void)addPanGesture{
  147. self.panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(finishPanGesture:)];
  148. [self.view addGestureRecognizer:self.panGesture];
  149. self.panGesture.enabled = NO;
  150. }
  151. - (void)finishPanGesture:(UIPanGestureRecognizer *)gesture{
  152. if (gesture.state == UIGestureRecognizerStateRecognized){
  153. CGPoint vert = [gesture velocityInView:self.view];
  154. if (vert.x < - 40){
  155. FKCategoryGuideController *category = [[FKCategoryGuideController alloc]initWithInfoItem:self.infoItem finish:self.finishBlock];
  156. [self.navigationController pushViewController:category animated:YES];
  157. }
  158. }
  159. }
  160. - (kAgeType)getCurrentAgeType{
  161. if (self.sevenBtn.selected) return kAgeTypeSeven;
  162. if (self.eightBtn.selected) return kAgeTypeEight;
  163. if (self.nineBtn.selected) return kAgeTypeNine;
  164. return kAgeTypeNone;
  165. }
  166. - (void)savePreferData{
  167. self.infoItem.ageType = [self getCurrentAgeType];
  168. }
  169. - (void)resetPanGestureEnable{
  170. if ([self getCurrentAgeType] == kAgeTypeNone){
  171. self.panGesture.enabled = NO;
  172. self.indicatorLabel.hidden = YES;
  173. self.rightArrowImgView.hidden = YES;
  174. }else{
  175. self.panGesture.enabled = YES;
  176. self.indicatorLabel.hidden = NO;
  177. self.rightArrowImgView.hidden = NO;
  178. }
  179. }
  180. - (void)clearAllSelected{
  181. self.sevenBtn.selected = NO;
  182. self.eightBtn.selected = NO;
  183. self.nineBtn.selected = NO;
  184. self.sevenBtn.backgroundColor = UIColorFromRGB(0xe2e2e2);
  185. self.eightBtn.backgroundColor = UIColorFromRGB(0xe2e2e2);
  186. self.nineBtn.backgroundColor = UIColorFromRGB(0xe2e2e2);
  187. }
  188. #pragma mark - action
  189. - (void)clickCancelBtn{
  190. if (self.cancelBlock){
  191. self.cancelBlock();
  192. return;
  193. }
  194. [self.navigationController popToRootViewControllerAnimated:YES];
  195. }
  196. - (void)clickAgeBtn:(UIButton *)sender{
  197. BOOL resSelect = !sender.selected;
  198. [self clearAllSelected];
  199. sender.selected = resSelect;
  200. if (sender.selected){
  201. sender.backgroundColor = UIColorFromRGB(0xff6362);
  202. }else{
  203. sender.backgroundColor = UIColorFromRGB(0xe2e2e2);
  204. }
  205. [self savePreferData];
  206. [self resetPanGestureEnable];
  207. }
  208. #pragma mark - property
  209. - (UILabel *)titleLabel{
  210. if (_titleLabel == nil) {
  211. _titleLabel = [[UILabel alloc]init];
  212. _titleLabel.text = @"为了您更好的购物体验\n请选择您的身份标签";
  213. _titleLabel.textAlignment = NSTextAlignmentCenter;
  214. _titleLabel.font = [UIFont systemFontOfSize:15];
  215. _titleLabel.textColor = UIColorFromRGB(0x9c9c9c);
  216. _titleLabel.numberOfLines = 0;
  217. }
  218. return _titleLabel;
  219. }
  220. - (UILabel *)indicatorLabel{
  221. if (_indicatorLabel == nil) {
  222. _indicatorLabel = [[UILabel alloc]init];
  223. _indicatorLabel.font = [UIFont systemFontOfSize:15];
  224. _indicatorLabel.textColor = UIColorFromRGB(0x9c9c9c);
  225. _indicatorLabel.text = @"滑动确认到下一步";
  226. }
  227. return _indicatorLabel;
  228. }
  229. - (UIImageView *)rightArrowImgView{
  230. if (_rightArrowImgView == nil) {
  231. _rightArrowImgView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"guide_right_arrow"]];
  232. }
  233. return _rightArrowImgView;
  234. }
  235. - (UIImageView *)iconImgView{
  236. if (_iconImgView == nil) {
  237. _iconImgView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"people_guide_icon"]];
  238. }
  239. return _iconImgView;
  240. }
  241. - (UIButton *)sevenBtn{
  242. if (_sevenBtn == nil) {
  243. _sevenBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  244. [_sevenBtn setTitle:@"70后" forState:UIControlStateNormal];
  245. [_sevenBtn setTitleColor:UIColorFromRGB(0x000000) forState:UIControlStateNormal];
  246. [_sevenBtn setTitleColor:UIColorFromRGB(0xffffff) forState:UIControlStateSelected];
  247. [_sevenBtn setBackgroundColor:UIColorFromRGB(0xe2e2e2)];
  248. [_sevenBtn addTarget:self action:@selector(clickAgeBtn:) forControlEvents:UIControlEventTouchUpInside];
  249. _sevenBtn.titleLabel.font = [UIFont systemFontOfSize:16];
  250. _sevenBtn.layer.cornerRadius = 5;
  251. _sevenBtn.tag = kAgeTypeSeven;
  252. }
  253. return _sevenBtn;
  254. }
  255. - (UIButton *)eightBtn{
  256. if (_eightBtn == nil) {
  257. _eightBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  258. [_eightBtn setTitle:@"80后" forState:UIControlStateNormal];
  259. [_eightBtn setTitleColor:UIColorFromRGB(0x000000) forState:UIControlStateNormal];
  260. [_eightBtn setTitleColor:UIColorFromRGB(0xffffff) forState:UIControlStateSelected];
  261. [_eightBtn setBackgroundColor:UIColorFromRGB(0xe2e2e2)];
  262. [_eightBtn addTarget:self action:@selector(clickAgeBtn:) forControlEvents:UIControlEventTouchUpInside];
  263. _eightBtn.titleLabel.font = [UIFont systemFontOfSize:16];
  264. _eightBtn.layer.cornerRadius = 5;
  265. _eightBtn.tag = kAgeTypeEight;
  266. }
  267. return _eightBtn;
  268. }
  269. - (UIButton *)nineBtn{
  270. if (_nineBtn == nil) {
  271. _nineBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  272. [_nineBtn setTitle:@"90后" forState:UIControlStateNormal];
  273. [_nineBtn setTitleColor:UIColorFromRGB(0x000000) forState:UIControlStateNormal];
  274. [_nineBtn setTitleColor:UIColorFromRGB(0xffffff) forState:UIControlStateSelected];
  275. [_nineBtn setBackgroundColor:UIColorFromRGB(0xe2e2e2)];
  276. [_nineBtn addTarget:self action:@selector(clickAgeBtn:) forControlEvents:UIControlEventTouchUpInside];
  277. _nineBtn.titleLabel.font = [UIFont systemFontOfSize:16];
  278. _nineBtn.layer.cornerRadius = 5;
  279. _nineBtn.tag = kAgeTypeNine;
  280. }
  281. return _nineBtn;
  282. }
  283. - (UIButton *)cancelBtn{
  284. if (_cancelBtn == nil) {
  285. _cancelBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  286. [_cancelBtn setTitle:@"跳过" forState:UIControlStateNormal];
  287. [_cancelBtn setTitleColor:UIColorFromRGB(0xcccccc) forState:UIControlStateNormal];
  288. [_cancelBtn setTitleColor:UIColorFromRGB(0xffffff) forState:UIControlStateSelected];
  289. [_cancelBtn addTarget:self action:@selector(clickCancelBtn) forControlEvents:UIControlEventTouchUpInside];
  290. _cancelBtn.titleLabel.font = [UIFont systemFontOfSize:14];
  291. _cancelBtn.layer.cornerRadius = 5.0f;
  292. _cancelBtn.layer.borderColor = UIColorFromRGB(0xcccccc).CGColor;
  293. _cancelBtn.layer.borderWidth = 0.5;
  294. }
  295. return _cancelBtn;
  296. }
  297. - (UIPageControl *)pageControl{
  298. if (_pageControl == nil) {
  299. _pageControl = [[UIPageControl alloc]init];
  300. _pageControl.currentPageIndicatorTintColor = UIColorFromRGB(0x4a4a4a);
  301. _pageControl.pageIndicatorTintColor = UIColorFromRGB(0x9b9b9b);
  302. _pageControl.numberOfPages = 3;
  303. _pageControl.currentPage = 1;
  304. }
  305. return _pageControl;
  306. }
  307. @end