3

我创建了一个十进制数UIPickerView。我希望第二个组件只是一个常量点字符串 (.) 成为分隔符,我的意思是:

1)它不动

2)它的宽度小于其他组件

3)与其他组件相比,它的颜色不同

在此处输入图像描述

这是代码:

#pragma mark - UIPickerView : Datasource Protocol
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return 3;
}

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {    if(component == 2)
        return 10;
    if(component == 1)
        return 1;
    else
        return 1000;
}

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    if(component == 1)
        return @".";
    else
        return [NSString stringWithFormat:@"%ld", (long)row];

}

我怎样才能做到这一点?

4

1 回答 1

1

您可以取一个UILable并将文本设置为“。” (即点),在选择器视图中添加标签。然后在相关委托中取 3 个组件,第二个组件返回 nil。

这是代码:

在你的设计方法中,我做到了viewDidLoad

myPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
myPickerView.delegate = self;
myPickerView.showsSelectionIndicator = YES;
[self.view addSubview:myPickerView];

label = [[UILabel alloc] initWithFrame:CGRectMake(145, 76, 36, 36)];
label.font = [UIFont boldSystemFontOfSize:40];
label.layer.cornerRadius = 18.0;
label.layer.masksToBounds = YES;
label.text = @".";
[label setTextColor:[UIColor darkGrayColor]];
label.backgroundColor = [UIColor clearColor];
label.textAlignment = NSTextAlignmentCenter;
label.shadowColor = [UIColor whiteColor];
label.shadowOffset = CGSizeMake (0,1);
[myPickerView addSubview:label];

然后在委托中会是这样的

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

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    if (component ==0) {
        return self.arrItemsTop.count;
    }else if (component == 1){
        return 0;
    }else
        return self.arrItemsOther.count;

}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

    if (component == 0) {
        return self.arrItemsTop[row];
    }
    else if (component == 1){
        return nil;
    }
    else{
        return self.arrItemsOther[row];
    }
}

NB :arrItemsTop是保存左侧值arrItemsOthers的数组,是保存右侧值的数组

输出 :

在此处输入图像描述

希望能帮助到你 ..

快乐编码。

于 2016-10-04T09:30:43.847 回答