新建工程如下:
编辑控制器的.h文件如下所示:
//
// ViewController.h
// UIDatePickerVIew
//
// Created by apple on 15/9/2.
// Copyright (c) 2015年 LiuXun. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UIPickerViewDataSource,UIPickerViewDelegate>
{
int a;
int b;
int t;
}
@property (nonatomic, strong) UIPickerView *pickView;
@property (nonatomic, strong) NSMutableArray *pickerNameArray;
@property (nonatomic, strong) NSMutableArray *pickerPlaceArray;
@property (nonatomic, strong) NSMutableDictionary *typeDictionary;
@property (nonatomic, strong) UILabel * lblSelect;
@property (nonatomic, strong) NSString *selectStr;
@property (nonatomic, strong) NSTimer * timer;
@property (nonatomic, strong) UIButton *btn;
@property (nonatomic, strong) UIImageView *zhen;
@property (nonatomic, strong) UIImageView *pan;
@end
编辑控制器的.m文件如下所示:
//
// ViewController.m
// UIDatePickerVIew
//
// Created by apple on 15/9/2.
// Copyright (c) 2015年 LiuXun. All rights reserved.
//
#import "ViewController.h"
#define WIDTH [UIScreen mainScreen].bounds.size.width
#define HEIGHT [UIScreen mainScreen].bounds.size.height
@interface ViewController ()
@property (nonatomic, strong) NSString *str1;
@property (nonatomic, strong) NSString *str2;
@property (nonatomic, strong) NSDate *start;
@property (nonatomic, strong) NSDate *end;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self assignForPickView];
self.pickView = [[UIPickerView alloc] initWithFrame:CGRectMake(10, WIDTH/2+50, WIDTH-20, WIDTH/3)];
self.pickView.backgroundColor = [UIColor yellowColor];
self.pickView.dataSource = self;
self.pickView.delegate = self;
self.pickView.showsSelectionIndicator = YES;
[self.view addSubview:self.pickView];
// 显示数据
self.lblSelect = [[UILabel alloc ] initWithFrame:CGRectMake(0, 10, WIDTH, WIDTH/6)];
self.lblSelect .text = self.selectStr;
self.lblSelect.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:self.lblSelect];
// button
self.btn = [[UIButton alloc] initWithFrame:CGRectMake(10, WIDTH/2+WIDTH/3+100, WIDTH-20, WIDTH/5)];
[self.btn setTitle:@"点击抽奖" forState:UIControlStateNormal];
[self.btn setTitle:@"开始抽奖" forState:UIControlStateHighlighted];
[self.btn addTarget:self action:@selector(chouJiang) forControlEvents:UIControlEventTouchUpInside];
[self.btn setBackgroundColor:[UIColor redColor]];
[self.view addSubview:self.btn];
// 显示表盘
self.pan = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, (WIDTH-40)/2, (WIDTH-40)/2)];
self.pan.center = CGPointMake(WIDTH/2, 120);
self.pan.image = [UIImage imageNamed:@"1.png"];
[self.view addSubview:self.pan];
// 显示表针
self.zhen = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 11, (WIDTH - 40)/4)];
self.zhen.center = CGPointMake(WIDTH/2, 120);
self.zhen.image = [UIImage imageNamed:@"3.png"];
[self.view addSubview:self.zhen];
[self.view bringSubviewToFront:self.lblSelect];
}
//抽奖监听方法
-(void)chouJiang
{
self.start = [[NSDate alloc] init];
NSLog(@"t1= %d",t);
self.timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(jiang) userInfo:nil repeats:YES];
}
-(void) jiang
{
self.end = [[NSDate alloc] init];
t = self.start.timeIntervalSince1970;
int t2 = self.end.timeIntervalSince1970;
NSLog(@"t2= %d t1= %d",t2,t);
if ((t2 - t) == 5 ) {
[self.timer invalidate];
}
int b1 = arc4random()%100+100000;
for (int i = 0; i<b1 ; i++) {
self.zhen.transform = CGAffineTransformRotate(self.zhen.transform, -M_PI_4/180);
}
a = arc4random() % (self.pickerNameArray.count);
NSMutableArray *BB = [self.typeDictionary objectForKey:self.pickerNameArray[a]];
b = arc4random() % (BB.count);
[self pickerView:self.pickView didSelectRow:a inComponent:0];
[self pickerView:self.pickView didSelectRow:b inComponent:1];
[self.pickView reloadComponent:0];
[self.pickView selectRow:a inComponent:0 animated:YES];
}
-(void) assignForPickView
{
self.pickerNameArray =[ [NSMutableArray alloc] initWithObjects:@"河南",@"北京",@"山东",@"河北" ,nil];
NSMutableArray *hArr = [NSMutableArray arrayWithObjects:@"周口", @"郑州",@"焦作",@"驻马店",nil];
NSMutableArray *bArr = [NSMutableArray arrayWithObjects:@"昌平",@"海淀",@"朝阳",@"丰台",@"大兴", nil];
NSMutableArray *sArr = [NSMutableArray arrayWithObjects:@"青岛",@"烟台", nil];
NSMutableArray *hBArr = [NSMutableArray arrayWithObjects:@"石家庄", nil];
NSMutableArray *typeArr = [NSMutableArray arrayWithObjects:hArr,bArr,sArr,hBArr, nil];
self.typeDictionary = [NSMutableDictionary dictionaryWithObjects:typeArr forKeys:self.pickerNameArray];
self.pickerPlaceArray = hArr;
}
// 分为多少列
-(NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2; }
// 每一列有多少行
-(NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
NSInteger row = 0;
switch (component) {
case 0:
row = self.pickerNameArray.count;
break;
case 1:
row = self.pickerPlaceArray.count;
break;
}
return row;
}
// 利用系统自带的格式。
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (component == 0) {
return self.pickerNameArray[row];
}
else
{
return self.pickerPlaceArray[row];
}
}
// 自定义格式
-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UILabel *contentLabel = nil;
if (component == 0) {
contentLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 30)];
contentLabel.textAlignment = NSTextAlignmentCenter;
contentLabel.text = self.pickerNameArray[row];
contentLabel.font = [UIFont systemFontOfSize:14];
contentLabel.backgroundColor = [UIColor cyanColor];
}else
{
contentLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 180, 30)];
contentLabel.text = self.pickerPlaceArray[row];
contentLabel.textAlignment = NSTextAlignmentCenter;
contentLabel.font = [UIFont systemFontOfSize:14];
contentLabel.backgroundColor = [UIColor darkGrayColor];
}
return contentLabel;
}
-(void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
switch (component) {
case 0:
{
self.str1 = self.pickerNameArray[row];
self.pickerPlaceArray = self.typeDictionary[self.str1];
if (self.pickerPlaceArray.count >1) {
self.selectStr = [NSString stringWithFormat:@"%@, %@",self.str1,[self.pickerPlaceArray objectAtIndex:b]];
}
else
{
self.selectStr = self.str1;
}
// 更新视图
[pickerView reloadComponent:1];
[pickerView selectRow:b inComponent:1 animated:YES];
}
break;
case 1 :
{
self.str2 = self.pickerPlaceArray[row];
self.selectStr = [NSString stringWithFormat:@"%@ ,%@",self.str1,self.str2];
break;
}
break;
}
self.lblSelect.text = self.selectStr;
}
// 设置每一列的行高
-(CGFloat) pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
return 40;
}
// 设置每一列的宽度
-(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
{
CGFloat width = 0.0;
if (component == 0) {
width = 100;
}
else
width = 180;
return width;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
运行结果如下: