Frage

Wie kann ich das richtige Text in einem ausrichten UIPickerView? Ich habe versucht, Brauch zu machen UILabels für die Zeilenaufrufe, aber aus irgendeinem Grund zeigt sich nichts, recht ausgerichtet oder auf andere Weise. Hier ist, was ich geschrieben habe:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
    [label setText:[NSString stringWithFormat:@"row %d", row]];
    [label setTextAlignment:UITextAlignmentRight];
    return [label autorelease];
}

Falls sich jemand wundert, habe ich verwendet CGRectZero Weil ich es in der gesehen habe UICatalog Beispiel.

War es hilfreich?

Lösung

Sie sehen nichts wegen CGrectzero. Sie müssen in Ihrem Fall eine Größe festlegen.

Wenn Sie im Uicatalog darüber sprechen, wie sie CGrectzero für die CustomView verwendet haben ... nun, wenn Sie sich CustomView ansehen.

Andere Tipps

Ich habe zwei Komponenten in Picker und zwei Arrays genommen, um den Titel der Zeilen in einer bestimmten Komponente festzulegen.

Unter dem folgenden Code wird PickerData in der Mitte mit Standardschrift und Schriftart des Pickers angezeigt. Es gibt genaues PickerData -Display -Verhalten mit der Mitte der Ausrichtung der PickerData.

Hier,

NSArray *component1Array=[NSArray arrayWithObjects:@"0 lbs",@"1 lbs",@"2 lbs",@"3 lbs",@"4 lbs",@"5 lbs",nil];

NSArray *component2Array=[NSArray arrayWithObjects:@"0.00 oz",@"0.25 oz",@"0.50 oz",@"0.75 oz",@"1.00 oz",nil];

     - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
        {
             //I have taken two components thats why I have set frame of my "label" accordingly. you can set the frame of the label depends on number of components you have... 

             UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 145, 45)];

             //For right alignment of text,You can set the UITextAlignmentRight of the label.  
             //No need to set alignment to UITextAlignmentLeft because it is defaulted to picker data display behavior.

             [label setTextAlignment:UITextAlignmentCenter];
             label.opaque=NO;
             label.backgroundColor=[UIColor clearColor];
             label.textColor = [UIColor blackColor];
             UIFont *font = [UIFont boldSystemFontOfSize:20];
             label.font = font;
             if(component == 0)
             {
                 [label setText:[NSString stringWithFormat:@"%@",[component1Array objectAtIndex:row]]];
             }
             else if(component == 1)
             {
                 [label setText:[NSString stringWithFormat:@"%@", [component2Array objectAtIndex:row]]];
             }
             return [label autorelease];
        }

Sie sollten unten eine uipickerview -Delegate -Methode kommentieren, wenn Sie die obige Methode verwenden ...

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

Die Ausgabe des obigen Beispielcodes sieht nach unten aus

alt text

In iOS 6 können Sie jetzt ein nsattributiertes String zurückgeben, der Textausrichtungsattribute enthalten können. Ich habe hier einen kurzen Ausschnitt über eine andere verwandte Frage gepostet: https://stackoverflow.com/a/14035356/928963

Stell sicher, dass du:

  • Stellen Sie einen expliziten Rahmen bereit, der so hoch und breit wie bei Bedarf ist.
  • Stellen Sie die Offenheit des Etiketts (über .opaque = yes oder nein) und die Hintergrundfarbe angemessen fest (Sie möchten normalerweise nein bzw. [UIColor ClearColor]).
  • Stellen Sie die Schriftart explizit ein.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top