首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

自定义pickview以及选中成效

2013-02-15 
自定义pickview以及选中效果////ViewController.m//UIPickerViewBySelf////Created by MAC on 13-1-29.//C

自定义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

热点排行