注册——性别选择、年龄选择、UIPickerView的简单使用

性别选择

 //

//   QJSexChangeController.m
//   
//
//   Created by 袁俊亮 on 15/7/15.
//   Copyright (c) 2015年 yuanjunliang. All rights reserved.
//

#import  " QJSexSelectedController.h "
#import  " QJUserDateController.h "
#import  " QJUserInfo.h "

#define titleMargin 64  //  标题距离头部的尺度
#define titleToIconMargin 54  //  标题和第一个女性头像之间的间距
#define iconToLabelZHMargin 12  //  头像和label之间的间距
#define zhLabelTOenLabelMargin 6  //  中文label和英文label之间的间距
#define enLabelTOIcon 52  //  第一个女性英文label到男性icon之间的距离

#define iconWidth womanIcon.currentBackgroundImage.size.width * 0.8
#define iconHeight womanIcon.currentBackgroundImage.size.height * 0.8


@interface QJSexSelectedController ()
/* *
 *  选择性别
 
*/
@property (nonatomic, assign) sexSelected sexSelect;
@property (nonatomic, weak) UIButton *manIcon;
@property (nonatomic, weak) UIButton *womanIcon;
@end

@implementation QJSexSelectedController

- (instancetype)init
{
     if (self = [super init]) {
    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithName: @" background "]];
    }
     return self;
}


- ( void)viewDidLoad {
    [super viewDidLoad];
    
     //  添加标题
    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake( 0, titleMargin, self.view.width,  20)];
    titleLabel.text =  @" 您的性别 ";
    titleLabel.textAlignment = UITextAlignmentCenter;
    titleLabel.textColor = [UIColor whiteColor];
    titleLabel.font = [UIFont systemFontOfSize: 20];
    [self.view addSubview:titleLabel];
    
     //  添加女性头像
    UIButton *womanIcon = [[UIButton alloc] init];
    [self addSexBtn:womanIcon sexSelected:sexSelectedWomen WithImageName: @" woman_normal " highlightedName: @" woman_highlighted "];
    CGFloat womanIconX = self.view.width *  0.5 - iconWidth *  0.5;
    CGFloat womanIconY = titleLabel.frame.origin.y + titleLabel.frame.size.height *  0.5 + titleToIconMargin;
    CGFloat womanIconW = iconWidth;
    CGFloat womanIconH = iconHeight;
    womanIcon.frame = CGRectMake(womanIconX, womanIconY, womanIconW, womanIconH);
    [womanIcon addTarget:self action:@selector(selectSex:) forControlEvents:UIControlEventTouchUpInside];
    self.womanIcon = womanIcon;
    [self.view addSubview:womanIcon];
    
     //  添加女性中文label
    CGFloat womanLabelZHX =  0;
    CGFloat womanLabelZHY = womanIconY + womanIconH + iconToLabelZHMargin;
    CGFloat womanLabelZHW = self.view.width;
    CGFloat womanLabelZHH =  15;
    
    UILabel *womanLabelZH = [[UILabel alloc] initWithFrame:CGRectMake(womanLabelZHX,womanLabelZHY , womanLabelZHW, womanLabelZHH)];
    womanLabelZH.text =  @" 女性 ";
    womanLabelZH.textAlignment = UITextAlignmentCenter;
    womanLabelZH.font = [UIFont boldSystemFontOfSize: 15];
    womanLabelZH.textColor = [UIColor whiteColor];
    [self.view addSubview:womanLabelZH];
    
     //  添加女性英文Label
    CGFloat womanLabelENX =  0;
    CGFloat womanLabelENY = womanLabelZHY + womanLabelZHH + zhLabelTOenLabelMargin;
    CGFloat womanLabelENW = self.view.width;
    CGFloat womanLabelENH =  12;
    UILabel *womanLabelEN = [[UILabel alloc] initWithFrame:CGRectMake(womanLabelENX, womanLabelENY, womanLabelENW, womanLabelENH)];
    womanLabelEN.text =  @" Female ";
    womanLabelEN.font = [UIFont systemFontOfSize: 12];
    womanLabelEN.textColor = [UIColor whiteColor];
    womanLabelEN.textAlignment = UITextAlignmentCenter;
    [self.view addSubview:womanLabelEN];
    
     /* ********************** */
     //  添加男性头像
    UIButton *manIcon = [[UIButton alloc] init];
    [self addSexBtn:manIcon sexSelected:sexSelectedMan WithImageName: @" man_normal " highlightedName: @" man_highlighted "];
    CGFloat manIconX = self.view.width *  0.5 - iconWidth *  0.5;
    CGFloat manIconY = womanLabelENY + womanLabelENH + enLabelTOIcon;
    CGFloat manIconW = iconWidth;
    CGFloat manIconH = iconHeight;
    manIcon.frame = CGRectMake(manIconX, manIconY, manIconW, manIconH);
    [manIcon addTarget:self action:@selector(selectSex:) forControlEvents:UIControlEventTouchUpInside];
    self.manIcon = manIcon;
    [self.view addSubview:manIcon];
    
     //  添加男性中文label
    CGFloat manLabelZHX =  0;
    CGFloat manLabelZHY = manIconY + manIconH + iconToLabelZHMargin;
    CGFloat manLabelZHW = self.view.width;
    CGFloat manLabelZHH =  15;
    
    UILabel *manLabelZH = [[UILabel alloc] initWithFrame:CGRectMake(manLabelZHX,manLabelZHY , manLabelZHW, manLabelZHH)];
    manLabelZH.text =  @" 男性 ";
    manLabelZH.textAlignment = UITextAlignmentCenter;
    manLabelZH.font = [UIFont boldSystemFontOfSize: 15];
    manLabelZH.textColor = [UIColor whiteColor];
    [self.view addSubview:manLabelZH];
    
     //  添加男性英文Label
    CGFloat manLabelENX =  0;
    CGFloat manLabelENY = manLabelZHY + manLabelZHH + zhLabelTOenLabelMargin;
    CGFloat manLabelENW = self.view.width;
    CGFloat manLabelENH =  12;
    UILabel *manLabelEN = [[UILabel alloc] initWithFrame:CGRectMake(manLabelENX, manLabelENY, manLabelENW, manLabelENH)];
    manLabelEN.text =  @" Male ";
    manLabelEN.font = [UIFont systemFontOfSize: 12];
    manLabelEN.textColor = [UIColor whiteColor];
    manLabelEN.textAlignment = UITextAlignmentCenter;
    [self.view addSubview:manLabelEN];
    
     //  添加上一步下一步按钮背景框
    [self creatPreNextStepBtn];
    
     //  默认选中女性
    [self selectSex:womanIcon];
}


/* *
 *  添加性别头像按钮
 
*/
- ( void)addSexBtn:(UIButton *)sexBtn sexSelected:(sexSelected)sexSelect WithImageName:(NSString *)name highlightedName:(NSString *)highlightedName
{
    [sexBtn setBackgroundImage:[UIImage imageWithName:name] forState:UIControlStateNormal];
    [sexBtn setBackgroundImage:[UIImage imageWithName:highlightedName] forState:UIControlStateSelected];
    sexBtn.tag = sexSelect;
    
    [self.view addSubview:sexBtn];
}

/* *
 *  选择性别
 
*/
- ( void)selectSex:(UIButton *)sexBtn
{
    QJUserInfo *userInfo = [[QJUserInfo alloc] init];
     if (sexBtn.tag == sexSelectedMan) {
        userInfo.sexSelect = sexSelectedMan;
        self.manIcon.selected = YES;
        self.womanIcon.selected = NO;
    } else  if (sexBtn.tag == sexSelectedWomen){
        userInfo.sexSelect = sexSelectedWomen;
        self.womanIcon.selected = YES;
        self.manIcon.selected = NO;
    }
    QJLog( @" %d ",userInfo.sexSelect);
}

/* *
 *  创建上一步下一步按钮
 
*/
- ( void)creatPreNextStepBtn
{
     //  添加上一步下一步按钮背景框
    UIButton *preNextBackgroundImage = [[UIButton alloc] init];
    [preNextBackgroundImage setBackgroundImage:[UIImage imageWithName: @" pre_next_step_background "] forState:UIControlStateNormal];
    CGFloat preNextBackgroundImageX = self.view.width *  0.5 - preNextBackgroundImage.currentBackgroundImage.size.width *  0.5;
    CGFloat preNextBackgroundImageY = self.view.height - preNextStepBtnTOendMargin - preNextBackgroundImage.currentBackgroundImage.size.height;
    CGFloat preNextBackgroundImageW = preNextBackgroundImage.currentBackgroundImage.size.width;
    CGFloat preNextBackgroundImageH = preNextBackgroundImage.currentBackgroundImage.size.height;
    preNextBackgroundImage.frame = CGRectMake(preNextBackgroundImageX, preNextBackgroundImageY, preNextBackgroundImageW, preNextBackgroundImageH);
    
    [self.view addSubview:preNextBackgroundImage];
    
     //  添加上一步按钮
    UIButton *preStepBtn = [[UIButton alloc] initWithFrame:CGRectMake(preNextBackgroundImageX, preNextBackgroundImageY, preNextBackgroundImageW *  0.5, preNextBackgroundImageH)];
    [preStepBtn setBackgroundImage:[UIImage imageWithName: @" pre_step_background "] forState:UIControlStateHighlighted];
    [preStepBtn addTarget:self action:@selector(preStep) forControlEvents:UIControlEventTouchUpInside];
    [preStepBtn setTitle: @" 上一步 " forState:UIControlStateNormal];
    
    [self.view addSubview:preStepBtn];
    
     //  下一步按钮
    UIButton *nextStepBtn = [[UIButton alloc] initWithFrame:CGRectMake(preNextBackgroundImageX + preNextBackgroundImageW *  0.5 + 1, preNextBackgroundImageY, preNextBackgroundImageW *  0.5 - 1, preNextBackgroundImageH)];
    [nextStepBtn setBackgroundImage:[UIImage imageWithName: @" next_step_background "] forState:UIControlStateHighlighted];
    [nextStepBtn setTitle: @" 下一步 " forState:UIControlStateNormal];
    [nextStepBtn addTarget:self action:@selector(nextStep) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:nextStepBtn];
}

/* *
 *  上一步
 
*/
- ( void)preStep
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

/* *
 *  下一步
 
*/
- ( void)nextStep
{
    QJUserDateController *userDateVC = [[QJUserDateController alloc] init];
    [self presentViewController:userDateVC animated:YES completion:nil];
}

@end

 

年龄选择——使用UIDatePicker

 //

//   QJUserDateController.m
//   
//
//   Created by 袁俊亮 on 15/7/15.
//   Copyright (c) 2015年 yuanjunliang. All rights reserved.
//

#import  " QJUserDateController.h "
#import  " QJSexSelectedController.h "
#import  " QJSkinTypeViewController.h "
#import  " SRMonthPicker.h "

#define highForRow 39  // 每一行的高度

@interface QJUserDateController ()<SRMonthPickerDelegate, UIPickerViewDataSource, UIPickerViewDelegate>
@property (nonatomic, weak) SRMonthPicker *datePicker;
@end

@implementation QJUserDateController

- (instancetype)init
{
     if (self = [super init]) {
        self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithName: @" background "]];
    }
     return self;
}

- ( void)viewDidLoad {
    [super viewDidLoad];
     //  添加标题
    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake( 072, self.view.width,  44)];
    titleLabel.text =  @" 您的年龄 ";
    titleLabel.textAlignment = UITextAlignmentCenter;
    titleLabel.font = [UIFont boldSystemFontOfSize: 22];
    titleLabel.textColor = [UIColor whiteColor];
    [self.view addSubview:titleLabel];

     //  创建datePicker
    SRMonthPicker *datePicker = [[SRMonthPicker alloc] initWithFrame:CGRectMake( 0, titleLabel.y +  100300300)];
    datePicker.monthPickerDelegate = self;
    [self.view addSubview:datePicker];
    datePicker.enableColourRow = YES;
    datePicker. delegate = self;
    self.datePicker = datePicker;
    
     //  设置默认选中的年
    NSDateFormatter *yearDateFormatter = [[NSDateFormatter alloc] init];
    [yearDateFormatter setDateFormat: @" yyyy "];
    NSInteger yearSelect = [[yearDateFormatter stringFromDate:self.datePicker.date] integerValue] -  1;
    [self.datePicker selectRow:yearSelect inComponent: 0 animated:YES];
    
     //  设置默认选中的月
    NSDateFormatter *mounthDateFormatter = [[NSDateFormatter alloc] init];
    [mounthDateFormatter setDateFormat: @" MM "];
    NSInteger mounthSelect = [[mounthDateFormatter stringFromDate:self.datePicker.date] integerValue] -  1;
    [self.datePicker selectRow:mounthSelect inComponent: 1 animated:YES];
    
     //  添加上一步下一步
    [self creatPreNextStepBtn];
}

#pragma mark - SRMonthPickerDelegate
/* *
 *  获取选择时间
 
*/
- ( void)monthPickerDidChangeDate:(SRMonthPicker *)monthPicker
{
     //  时间格式
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat: @" yyyy-MM "];
    NSString *dateStr = [dateFormatter stringFromDate:self.datePicker.date];
    QJLog( @" %@ ",dateStr);
}


- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
     return highForRow;
}


/* *
 *  创建上一步下一步按钮
 
*/
- ( void)creatPreNextStepBtn
{
     //  添加上一步下一步按钮背景框
    UIButton *preNextBackgroundImage = [[UIButton alloc] init];
    [preNextBackgroundImage setBackgroundImage:[UIImage imageWithName: @" pre_next_step_background "] forState:UIControlStateNormal];
    CGFloat preNextBackgroundImageX = self.view.width *  0.5 - preNextBackgroundImage.currentBackgroundImage.size.width *  0.5;
    CGFloat preNextBackgroundImageY = self.view.height - preNextStepBtnTOendMargin - preNextBackgroundImage.currentBackgroundImage.size.height;
    CGFloat preNextBackgroundImageW = preNextBackgroundImage.currentBackgroundImage.size.width;
    CGFloat preNextBackgroundImageH = preNextBackgroundImage.currentBackgroundImage.size.height;
    preNextBackgroundImage.frame = CGRectMake(preNextBackgroundImageX, preNextBackgroundImageY, preNextBackgroundImageW, preNextBackgroundImageH);
    
    [self.view addSubview:preNextBackgroundImage];
    
     //  添加上一步按钮
    UIButton *preStepBtn = [[UIButton alloc] initWithFrame:CGRectMake(preNextBackgroundImageX, preNextBackgroundImageY, preNextBackgroundImageW *  0.5, preNextBackgroundImageH)];
    [preStepBtn setBackgroundImage:[UIImage imageWithName: @" pre_step_background "] forState:UIControlStateHighlighted];
    [preStepBtn addTarget:self action:@selector(preStep) forControlEvents:UIControlEventTouchUpInside];
    [preStepBtn setTitle: @" 上一步 " forState:UIControlStateNormal];
    
    [self.view addSubview:preStepBtn];
    
     //  下一步按钮
    UIButton *nextStepBtn = [[UIButton alloc] initWithFrame:CGRectMake(preNextBackgroundImageX + preNextBackgroundImageW *  0.5 + 1, preNextBackgroundImageY, preNextBackgroundImageW *  0.5 - 1, preNextBackgroundImageH)];
    [nextStepBtn setBackgroundImage:[UIImage imageWithName: @" next_step_background "] forState:UIControlStateHighlighted];
    [nextStepBtn setTitle: @" 下一步 " forState:UIControlStateNormal];
    [nextStepBtn addTarget:self action:@selector(nextStep) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:nextStepBtn];
}

/* *
 *  上一步
 
*/
- ( void)preStep
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

/* *
 *  下一步
 
*/
- ( void)nextStep
{
    QJSkinTypeViewController *skinTypeVC = [[QJSkinTypeViewController alloc] init];
    [self presentViewController:skinTypeVC animated:YES completion:nil];
}

@end

 

UIPickerView的简单使用

//
//   QJSkinTypeViewController.m
//   
//
//   Created by 袁俊亮 on 15/7/16.
//   Copyright (c) 2015年 yuanjunliang. All rights reserved.
//

#import  " QJSkinTypeViewController.h "
#import  " QJUserDateController.h "

@interface QJSkinTypeViewController ()<UIPickerViewDelegate, UIPickerViewDataSource>
@property (nonatomic, strong) NSArray *skinTypeArray;

@property (nonatomic, weak) UIPickerView *skinPickerView;
@end

@implementation QJSkinTypeViewController

- (NSArray *)skinTypeArray
{
     if (!_skinTypeArray) {
       _skinTypeArray = @[ @" 干性肌肤 "@" 油性肌肤 "@" 混合性肌肤 "@" 中性肌肤 "@" 敏感性肌肤 "];
    }
     return _skinTypeArray;
}

- (instancetype)init
{
     if (self = [super init]) {
        self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithName: @" background "]];
    }
     return self;
}

- ( void)viewDidLoad {
    [super viewDidLoad];
    
     //  titleLabel
    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake( 072, self.view.width,  44)];
    titleLabel.text =  @" 您的肤质 ";
    titleLabel.font = [UIFont boldSystemFontOfSize: 20];
    titleLabel.textColor = [UIColor whiteColor];
    titleLabel.textAlignment = UITextAlignmentCenter;
    [self.view addSubview:titleLabel];
    
     //  UIPickerView属性设置
    UIPickerView *skinPickerView = [[UIPickerView alloc] init];
    skinPickerView.frame = CGRectMake( 0, titleLabel.y +  100 , self.view.width,  216);
    skinPickerView.dataSource = self;
    skinPickerView. delegate = self;
    [skinPickerView selectRow: 2 inComponent: 0 animated:YES];
    [self.view addSubview:skinPickerView];
    self.skinPickerView = skinPickerView;
    
     //  添加上一步下一步按钮
    [self creatPreNextStepBtn];
}


#pragma mark - UIPickerViewDataSource
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
     return  1;
}

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
     return  5;
}

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
     return self.skinTypeArray[row];
}

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
    UILabel *rowLabel = [[UILabel alloc] init];
    rowLabel.textAlignment = UITextAlignmentCenter;
    rowLabel.textColor = [UIColor whiteColor];
    rowLabel.font = [UIFont boldSystemFontOfSize: 22];
    rowLabel.text = self.skinTypeArray[row];
    
     return rowLabel;
}

- ( void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    NSLog( @" %@ ",self.skinTypeArray[row]);
}

- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
     return  44;
}


#pragma mark - 上一步下一步
/* *
 *  创建上一步下一步按钮
 
*/
- ( void)creatPreNextStepBtn
{
     //  添加上一步下一步按钮背景框
    UIButton *preNextBackgroundImage = [[UIButton alloc] init];
    [preNextBackgroundImage setBackgroundImage:[UIImage imageWithName: @" pre_next_step_background "] forState:UIControlStateNormal];
    CGFloat preNextBackgroundImageX = self.view.width *  0.5 - preNextBackgroundImage.currentBackgroundImage.size.width *  0.5;
    CGFloat preNextBackgroundImageY = self.view.height - preNextStepBtnTOendMargin - preNextBackgroundImage.currentBackgroundImage.size.height;
    CGFloat preNextBackgroundImageW = preNextBackgroundImage.currentBackgroundImage.size.width;
    CGFloat preNextBackgroundImageH = preNextBackgroundImage.currentBackgroundImage.size.height;
    preNextBackgroundImage.frame = CGRectMake(preNextBackgroundImageX, preNextBackgroundImageY, preNextBackgroundImageW, preNextBackgroundImageH);
    
    [self.view addSubview:preNextBackgroundImage];
    
     //  添加上一步按钮
    UIButton *preStepBtn = [[UIButton alloc] initWithFrame:CGRectMake(preNextBackgroundImageX, preNextBackgroundImageY, preNextBackgroundImageW *  0.5, preNextBackgroundImageH)];
    [preStepBtn setBackgroundImage:[UIImage imageWithName: @" pre_step_background "] forState:UIControlStateHighlighted];
    [preStepBtn addTarget:self action:@selector(preStep) forControlEvents:UIControlEventTouchUpInside];
    [preStepBtn setTitle: @" 上一步 " forState:UIControlStateNormal];
    
    [self.view addSubview:preStepBtn];
    
     //  下一步按钮
    UIButton *nextStepBtn = [[UIButton alloc] initWithFrame:CGRectMake(preNextBackgroundImageX + preNextBackgroundImageW *  0.5 + 1, preNextBackgroundImageY, preNextBackgroundImageW *  0.5 - 1, preNextBackgroundImageH)];
    [nextStepBtn setBackgroundImage:[UIImage imageWithName: @" next_step_background "] forState:UIControlStateHighlighted];
    [nextStepBtn setTitle: @" 下一步 " forState:UIControlStateNormal];
    [nextStepBtn addTarget:self action:@selector(nextStep) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:nextStepBtn];
}

/* *
 *  上一步
 
*/
- ( void)preStep
{
    QJUserDateController *userDateVC = [[QJUserDateController alloc] init];
    [self presentViewController:userDateVC animated:YES completion:nil];
}

/* *
 *  下一步
 
*/
- ( void)nextStep
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

@end 

其中的图片自己更换 

转载于:https://www.cnblogs.com/yuanjunliang/articles/4663450.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值