2016-10-04 58 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

相關問題