注册——性别选择、年龄选择、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
//
//
// 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(0, 72, 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 + 100, 300, 300)];
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
//
//
// 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(0, 72, 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 + 100, 300, 300)];
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(0, 72, 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];
}
// 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(0, 72, 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
其中的图片自己更换