No Description

FKSexGuideController.m 12KB

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