2012-08-23 26 views

回答

1

而不是使用“标题”委托方法,您使用UIView方法,并创建并填充自己的视图。所以你创建一个320宽的UIView(比如说44高),在其中放置一个标签,设置标签的文本和颜色,然后你就可以得到你想要的。

编辑:

#define PICKER_VIEW_SIZE CGSize(300, 40) 

- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component 
{ 
    return PICKER_VIEW_SIZE.height; 
} 

- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component 
{ 
    return PICKER_VIEW_SIZE.width; 
} 

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view 
{ 
    // assume one component, but this solutions works for multiple 
    // lets do red, green, and blue alternating backgrounds with alternating black and white text 

    UIColor *backgroundColor; 
    switch(row % 3) { 
    case 0: 
    default: 
     backgroundColor = [UICOlor redColor]; 
     break; 
    case 1: 
     backgroundColor = [UIColor blueColor]; 
     break; 
    case 2: 
     backgroundColor = [UIColor greenColor]; 
     break; 
    } 
    UIColor *textColor = (row % 2) ? [UIColor blackColor] : [UIColor whiteColor]; 

    UIView *view = [[UIView alloc] initWithFrame:(CGRect){ {0,0}, PICKER_VIEW_SIZE}]; 
    view.backgroundColor = backgroundColor; 

    UILabel *label = [UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 20)]; 
    // configure the label 
    label.text = text appropriate for this row; 

    [view addSubview:label]; 

    return view; 
} 
+0

是的,我知道这个方法,但我想,每一个线(行)有不同的颜色。这甚至有可能吗? –

+0

当然有可能!当你被要求查看一行时,你决定使用什么颜色。该委托方法告诉你列和行是什么。你可以使每个视图不同 - 使用不同的背景颜色,字体,文本颜色等。你可以做任何你想要的! –

+0

你能举一些例子吗? –