2016-10-04 5 views
2

Ich habe eine Dezimalzahl UIPickerView erstellt. Ich mag die zweite Komponente, die nur ein konstanter Punkt ist String als Trenn wurde, meine ich (.):legen Sie eine Komponente von UIPickerView als Trennzeichen

1) Es bewegt sich nicht

2) Seine Breite ist kleiner als andere Komponenten

3) Seine Farbe ist anders im Vergleich zu anderen Komponenten

enter image description here

Hier ist der Code:

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

} 

Wie kann ich das tun?

+2

Sie könnten die Auswahlansicht ableiten und die Punktansicht (eine Beschriftung möglicherweise) als Unteransicht hinzufügen. Ich würde es positionieren und nach vorne bringen - in einer überschriebenen "layoutSubviews" -Methode. –

+0

Versuchen Sie, 2 Komponenten 'UIPickerView' zu verwenden und ein' UILabel' über dem 'UIPickerView' hinzuzufügen. – Mrunal

Antwort

1

Sie können eine UILable nehmen und den Text als "." (d. h. Punkt), fügen Sie die Beschriftung in der Auswahlansicht hinzu. Dann nehmen Sie 3 Komponenten in den relevanten Delegaten und für die zweite Komponente geben Sie Null zurück. Hier

ist der Code:

In Ihrem Designverfahren, ich habe es in 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]; 

Dann in dem Delegat so sein würde

- (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 ist das Array mit Werten auf der linken Seite und arrItemsOthers ist das Array, das rechts hält t Seite Wert

OutPut:

enter image description here

Hoffe, es hilft ..

Glücklich Codierung.

+0

Bitte stimmen Sie ab, um die Antwort zu ermutigen. – Janmenjaya

Verwandte Themen