2016-10-04 39 views
2

我创建了一个十进制数字UIPickerView。我想第二组分这仅仅是一个恒定点串成为作为隔板,我的意思是(。):将UIPickerView的组件设置为分隔符

1)它不移动

2)它的宽度比其它部件更小

3)它的颜色是不同的在与其它组分

enter image description here

这里比较是代码:

#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]; 

} 

我该怎么做?

+2

您可能想要选择器视图的子类并添加点视图(可能是一个标签)作为子视图。我将它定位 - 并将其放在最前面 - 用一个被覆盖的'layoutSubviews'方法。 –

+0

尝试使用2个组件“UIPickerView”,并在“UIPickerView”之上添加一个“UILabel”。 – Mrunal

回答

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是数组持有righ T侧值

输出:

enter image description here

希望它可以帮助..

编码愉快。

+0

请投票,以鼓励答案。 – Janmenjaya