2016-10-04 36 views
2

小数点以下はUIPickerViewです。 (は)Iは、Iは平均セパレータようになっただけで、一定のドット列である第二成分を望む: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つのコンポーネントと、2番目のコンポーネントのreturn 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は右辺を保持する配列です。 T側値

出力:

enter image description here

が...それがお役に立てば幸い

ハッピーコーディング

+0

答えを奨励するために投票してください。 – Janmenjaya

関連する問題