#import "ViewController.h"
@interface ViewController () <</span>UIPickerViewDelegate,UIPickerViewDataSource>
{
UIPickerView *myPickView;
NSMutableArray *dataList;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
dataList = [NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];
myPickView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 100, 320,220)];
myPickView.delegate = self;
myPickView.dataSource = self;
//在当前选择上显示一个透明窗口
myPickView.showsSelectionIndicator = YES;
[self.view addSubview:myPickView];
//初始化,自动转一圈,避免第一次是数组第一个值造成留白
[myPickView selectRow:[dataList count] inComponent:0 animated:YES];
}
#pragma mark pickview delegate
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return [dataList count]*50;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [dataList objectAtIndex:(row%[dataList count])];
}
//选中picker cell,save ArrayIndex
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
NSUInteger max = 0;
NSUInteger base10 = 0;
if(component == 0)
{
max = [dataList count]*50;
base10 = (max/2)-(max/2)%[dataList count];
[pickerView selectRow:[pickerView selectedRowInComponent:component]%[dataList count]+base10 inComponent:component animated:false];
}
}
//替换text居中
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(12.0f, 0.0f, [pickerView rowSizeForComponent:component].width-12, [pickerView rowSizeForComponent:component].height)];
label.backgroundColor = [UIColor orangeColor];
label.text = [dataList objectAtIndex:(row%[dataList count])];
label.textAlignment = NSTextAlignmentCenter;
return label;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end