UIPickerView中的行分隔符

时间:2013-12-11 10:13:10

标签: iphone ios7 uipickerview

如何在我的选择器视图中隐藏分隔符。这是屏幕截图enter image description here

以下是我的自定义UIPickerView的代码。

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {

UILabel *label=[[UILabel alloc]init];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor whiteColor];
label.textAlignment=NSTextAlignmentCenter;

switch (component) {
    case 0:
        label.text=[_hourArray objectAtIndex:row];
        label.font = [UIFont fontWithName:@"MYRIADPRO-REGULAR" size:70];
        break;

    case 1:
        label.text=[_minutesArray objectAtIndex:row];
        label.font = [UIFont fontWithName:@"MYRIADPRO-REGULAR" size:70];
        break;

    case 2:
        label.text=[_ampmArray objectAtIndex:row];
        label.font = [UIFont fontWithName:@"MYRIADPRO-REGULAR" size:15];

        break;

    default:
        break;
}
return label;
}

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 3;
}

请帮帮我。谢谢

3 个答案:

答案 0 :(得分:5)

隐藏UIPickerView的选择指示器:

_pickerView.showsSelectionIndicator = FALSE;

您可以在代码(如上所述)或Interface Builder中创建它:

enter image description here

修改

根据Apple documentation

  

在iOS 7及更高版本中,您无法自定义选择器视图的选择   指示符。始终显示选择指示器,因此请进行设置   财产对NO没有影响。

答案 1 :(得分:0)

在Swift 5中,您可以使用此替代方法。只需将以下代码添加到您的viewcontroller类:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    for i in 1...2 {
        myPickerView.subviews[i].isHidden = true
    }
}

答案 2 :(得分:-2)

如果确实需要,这里是一个务实的解决方案:创建UIPickerView的子类,在其中重写didAddSubview。如果添加的子视图的高度<= 1.0,则为分隔符,您可以隐藏和/或删除它。

注意:在将来的iOS版本中可能会中断,因此请谨慎处理。