自定义pickview以及选中效果
//// ViewController.m// UIPickerViewBySelf//// Created by MAC on 13-1-29.// Copyright (c) 2013年 MAC. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController@synthesize fontlabel;@synthesize pickView;- (void)viewDidLoad{ [super viewDidLoad]; self.pickView.dataSource = self; self.pickView.delegate = self; fonts = [UIFont familyNames]; fontSize = [NSArray arrayWithObjects:@"10",@"15", @"20",@"25", @"30",@"35", @"40",@"45", nil]; fontColor =[NSArray arrayWithObjects: [UIColor redColor], [UIColor blueColor], [UIColor blackColor], [UIColor yellowColor], [UIColor grayColor], [UIColor greenColor], [UIColor brownColor], [UIColor orangeColor], [UIColor purpleColor], [UIColor magentaColor],nil]; for(int i= 0;i<3;i++) { int row = 0; if(i==0) { row = [fonts count]/2; } else if (i==1) { row = [fontColor count]/2; } else if (i==2) { row =[fontSize count]/2; }[pickView selectRow:row inComponent:i animated:true]; }// [fontColor retain]; // Do any additional setup after loading the view, typically from a nib.}-(void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ UIView *view0,*view1,*view2; NSInteger row0,row1,row2; row0 = [pickView selectedRowInComponent:0]; row1 = [pickView selectedRowInComponent:1]; row2 = [pickView selectedRowInComponent:2]; view0 = [pickView viewForRow:row0 forComponent:0]; view1 = [pickView viewForRow:row1 forComponent:1]; view2 = [pickView viewForRow:row2 forComponent:2]; UILabel *label1,*label2,*label0; label0 =(UILabel *)[view0 viewWithTag:200]; label1 =(UILabel *)[view1 viewWithTag:200]; label2 =(UILabel *)[view2 viewWithTag:200]; fontlabel.font = [UIFont fontWithName:label0.text size:[label2.text floatValue]]; fontlabel.textColor = label1.backgroundColor;}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}#pragma mark -#pragma mark UIPICKVIEW CUSTOM FUNTION//返回一共几列的值-(NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView{ return 3;}//返回每列具体多少行-(NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ if(component==0) { return [fonts count];} else if(component==1) { return [fontColor count]; } else if(component ==2) { return [fontSize count]; } return -1;}//返回三列各列宽度-(CGFloat) pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{ if(component==0) { return 180.0f;} else if(component==1) { return 90.0f; } else if(component ==2) { return 50.0f; } return 0.0f;}//返回row高度-(CGFloat) pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{ return 50.0f;}//可以理解为自定义的view内容-(UIView *) pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{ CGFloat width = [self pickerView:pickView widthForComponent:component]; CGFloat rowheight =[self pickerView:pickView rowHeightForComponent:(component)]; UIView *myView = [[UIView alloc]init]; myView.frame =CGRectMake(0.0f, 0.0f, width, rowheight); UILabel *txtlabel = [[UILabel alloc] init]; txtlabel.tag=200; txtlabel.frame = myView.frame; [myView addSubview:txtlabel]; if(component==0) { txtlabel.text = [fonts objectAtIndex:row]; } else if(component==1) { txtlabel.backgroundColor =[fontColor objectAtIndex:row]; } else if(component==2) { txtlabel.text =[fontSize objectAtIndex:row]; } return myView;}@end