// // FKBookGuideController.m // FirstLink // // Created by jack on 16/4/25. // Copyright © 2016年 FirstLink. All rights reserved. // #import "FKSexGuideController.h" #import "FKSexChoseBtn.h" #import "FKGuideManager.h" @interface FKSexGuideController () @property (nonatomic, strong) UILabel *titleLabel; @property (nonatomic, strong) UILabel *indicatorLabel; @property (nonatomic, strong) UIView *middleLine; @property (nonatomic, strong) UIImageView *upImgView; @property (nonatomic, strong) UIImageView *downImgView; @property (nonatomic, strong) UIImageView *iconImgView; @property (nonatomic, strong) UIImageView *rightArrowImgView; @property (nonatomic, strong) UIButton *manBtn; @property (nonatomic, strong) UIButton *womanBtn; @property (nonatomic, strong) UIButton *cancelBtn; @property (nonatomic, strong) UIPageControl *pageControl; @property (nonatomic, strong) UIPanGestureRecognizer *panGesture; @property (nonatomic, strong) FKPreferinfoItem *infoItem; @property (nonatomic, copy) preferFinish finishBlock; @property (nonatomic, copy) preferCancel cancelBlock; @end @implementation FKSexGuideController - (instancetype)initWithInfoItem:(FKPreferinfoItem *)infoItem finish:(preferFinish)finish cancel:(preferCancel)cancel{ if (self = [super init]) { self.infoItem = infoItem; self.finishBlock = finish; self.cancelBlock = cancel; } return self; } - (void)viewDidLoad{ [super viewDidLoad]; self.view.backgroundColor = UIColorFromRGB(0xf4f4f4); self.edgesForExtendedLayout = UIRectEdgeAll; [self addAllSubviews]; [self addPanGesture]; [self configContent]; } - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:YES]; // if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { // self.navigationController.interactivePopGestureRecognizer.delegate = self; // } self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:[UIView new]]; } - (void)addAllSubviews{ [self.view addSubview:self.iconImgView]; [self.view addSubview:self.rightArrowImgView]; [self.view addSubview:self.titleLabel]; [self.view addSubview:self.indicatorLabel]; [self.view addSubview:self.manBtn]; [self.view addSubview:self.womanBtn]; [self.view addSubview:self.cancelBtn]; [self.view addSubview:self.pageControl]; CGFloat manTopMargin = 45.0f; CGFloat womanTopMargin = 60.0f; CGFloat iconTop = 130.0f; if (UISCREENHEIGH <= 480){ manTopMargin = 30; womanTopMargin = 30; iconTop = 80.0f; }else if (UISCREENHEIGH <= 568){ manTopMargin = 40; womanTopMargin = 40; } [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self.view); make.bottom.equalTo(self.view).offset(- 50); }]; [self.iconImgView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view).offset(iconTop); make.centerX.equalTo(self.view); }]; [self.indicatorLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self.view).offset(10); make.bottom.equalTo(self.pageControl.mas_top).offset(- 25); }]; [self.rightArrowImgView mas_makeConstraints:^(MASConstraintMaker *make) { make.right.equalTo(self.indicatorLabel.mas_left).offset(- 3); make.centerY.equalTo(self.indicatorLabel); }]; [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.iconImgView.mas_bottom).offset(18); make.centerX.equalTo(self.view); }]; [self.manBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.titleLabel.mas_bottom).offset(manTopMargin); make.centerX.equalTo(self.view); make.size.mas_offset(CGSizeMake(170, 40)); }]; [self.womanBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.manBtn.mas_bottom).offset(womanTopMargin); make.centerX.equalTo(self.view); make.size.mas_offset(CGSizeMake(170, 40)); }]; [self.cancelBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view).offset(IS_IPHONE_X ? 54 : 40); make.right.equalTo(self.view).offset(- 20); make.size.mas_equalTo(CGSizeMake(49, 25.5)); }]; } //- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ // return NO; //} - (void)configContent{ if (self.infoItem){ switch (self.infoItem.sexType) { case kSexTypeBoth:{ self.manBtn.selected = YES; self.womanBtn.selected = YES; } break; case kSexTypeMan:{ self.manBtn.selected = YES; self.womanBtn.selected = NO; } break; case kSexTypeWoman:{ self.manBtn.selected = NO; self.womanBtn.selected = YES; } break; default: break; } if (self.manBtn.selected) self.manBtn.backgroundColor = UIColorFromRGB(0xff6362); if (self.womanBtn.selected) self.womanBtn.backgroundColor = UIColorFromRGB(0xff6362); [self resetPanGestureEnable]; } } - (void)addPanGesture{ self.panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(finishPanGesture:)]; [self.view addGestureRecognizer:self.panGesture]; self.panGesture.enabled = NO; } - (kSexType)getCurrentSexType{ if (self.manBtn.selected && self.womanBtn.selected){ return kSexTypeBoth; }else if (self.manBtn.selected){ return kSexTypeMan; }else if (self.womanBtn.selected){ return kSexTypeWoman; } return kSexTypeNone; } - (void)finishPanGesture:(UIPanGestureRecognizer *)gesture{ if (gesture.state == UIGestureRecognizerStateRecognized){ CGPoint vert = [gesture velocityInView:self.view]; if (vert.x < - 40){ kSexType sexType = [self getCurrentSexType]; if (sexType == kSexTypeNone) return; FKAgeGuideController *age = [[FKAgeGuideController alloc]initWithInfoItem:self.infoItem finish:self.finishBlock cancel:self.cancelBlock]; [self.navigationController pushViewController:age animated:YES]; } } } - (void)resetPanGestureEnable{ if ([self getCurrentSexType] == kSexTypeNone){ self.panGesture.enabled = NO; self.indicatorLabel.hidden = YES; self.rightArrowImgView.hidden = YES; }else{ self.panGesture.enabled = YES; self.indicatorLabel.hidden = NO; self.rightArrowImgView.hidden = NO; } } - (void)savePreferData{ self.infoItem.sexType = [self getCurrentSexType]; } #pragma mark - action - (void)clickSexBtn:(UIButton *)sender{ sender.selected = !sender.selected; if (sender.selected){ sender.backgroundColor = UIColorFromRGB(0xff6362); }else{ sender.backgroundColor = UIColorFromRGB(0xe2e2e2); } [self savePreferData]; [self resetPanGestureEnable]; } - (void)clickCancelBtn{ if (self.cancelBlock){ self.cancelBlock(); return; } [self.navigationController popToRootViewControllerAnimated:YES]; } #pragma mark - property - (UILabel *)titleLabel{ if (_titleLabel == nil) { _titleLabel = [[UILabel alloc]init]; _titleLabel.text = @"为了您更好的购物体验\n请选择您的身份标签"; _titleLabel.textAlignment = NSTextAlignmentCenter; _titleLabel.font = [UIFont systemFontOfSize:15]; _titleLabel.textColor = UIColorFromRGB(0x9c9c9c); _titleLabel.numberOfLines = 0; } return _titleLabel; } - (UILabel *)indicatorLabel{ if (_indicatorLabel == nil) { _indicatorLabel = [[UILabel alloc]init]; _indicatorLabel.font = [UIFont systemFontOfSize:15]; _indicatorLabel.textColor = UIColorFromRGB(0x9c9c9c); _indicatorLabel.text = @"滑动确认到下一步"; _indicatorLabel.hidden = YES; } return _indicatorLabel; } - (UIImageView *)rightArrowImgView{ if (_rightArrowImgView == nil) { _rightArrowImgView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"guide_right_arrow"]]; _rightArrowImgView.hidden = YES; } return _rightArrowImgView; } - (UIImageView *)upImgView{ if (_upImgView == nil) { _upImgView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"guideWoman"]]; } return _upImgView; } - (UIImageView *)downImgView{ if (_downImgView == nil) { _downImgView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"guideMan"]]; } return _downImgView; } - (UIImageView *)iconImgView{ if (_iconImgView == nil) { _iconImgView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"people_guide_icon"]]; } return _iconImgView; } - (UIButton *)manBtn{ if (_manBtn == nil) { _manBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [_manBtn setTitle:@"男士" forState:UIControlStateNormal]; [_manBtn setTitleColor:UIColorFromRGB(0x000000) forState:UIControlStateNormal]; [_manBtn setTitleColor:UIColorFromRGB(0xffffff) forState:UIControlStateSelected]; [_manBtn setBackgroundColor:UIColorFromRGB(0xe2e2e2)]; [_manBtn addTarget:self action:@selector(clickSexBtn:) forControlEvents:UIControlEventTouchUpInside]; _manBtn.titleLabel.font = [UIFont systemFontOfSize:16]; _manBtn.layer.cornerRadius = 5; _manBtn.tag = kSexTypeMan; } return _manBtn; } - (UIButton *)womanBtn{ if (_womanBtn == nil) { _womanBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [_womanBtn setTitle:@"女士" forState:UIControlStateNormal]; [_womanBtn setTitleColor:UIColorFromRGB(0x000000) forState:UIControlStateNormal]; [_womanBtn setTitleColor:UIColorFromRGB(0xffffff) forState:UIControlStateSelected]; [_womanBtn setBackgroundColor:UIColorFromRGB(0xe2e2e2)]; [_womanBtn addTarget:self action:@selector(clickSexBtn:) forControlEvents:UIControlEventTouchUpInside]; _womanBtn.titleLabel.font = [UIFont systemFontOfSize:16]; _womanBtn.layer.cornerRadius = 5; _womanBtn.tag = kSexTypeWoman; } return _womanBtn; } - (UIButton *)cancelBtn{ if (_cancelBtn == nil) { _cancelBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [_cancelBtn setTitle:@"跳过" forState:UIControlStateNormal]; [_cancelBtn setTitleColor:UIColorFromRGB(0xcccccc) forState:UIControlStateNormal]; [_cancelBtn addTarget:self action:@selector(clickCancelBtn) forControlEvents:UIControlEventTouchUpInside]; _cancelBtn.titleLabel.font = [UIFont systemFontOfSize:14]; _cancelBtn.layer.cornerRadius = 5.0f; _cancelBtn.layer.borderColor = UIColorFromRGB(0xcccccc).CGColor; _cancelBtn.layer.borderWidth = 0.5; } return _cancelBtn; } - (UIView *)middleLine{ if (_middleLine == nil) { _middleLine = [[UIView alloc]init]; _middleLine.backgroundColor = UIColorFromRGB(0x7f7f7f); } return _middleLine; } - (UIPageControl *)pageControl{ if (_pageControl == nil) { _pageControl = [[UIPageControl alloc]init]; _pageControl.currentPageIndicatorTintColor = UIColorFromRGB(0x4a4a4a); _pageControl.pageIndicatorTintColor = UIColorFromRGB(0x9b9b9b); _pageControl.numberOfPages = 3; _pageControl.currentPage = 0; } return _pageControl; } - (FKPreferinfoItem *)infoItem{ if (_infoItem == nil) { _infoItem = [[FKPreferinfoItem alloc]init]; } return _infoItem; } @end