Domanda

Come posso allineare a destra il testo in un UIPickerView? Ho provato a fare UILabels personalizzate per le viste di fila, ma per qualche ragione, nulla sta rivelando, allineato a destra o in altro modo. Ecco quello che ho scritto:

- (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];
}

Nel caso in cui qualcuno si sta chiedendo, ho usato CGRectZero perché l'ho visto nell'esempio UICatalog.

È stato utile?

Soluzione

Il tuo non vedere nulla a causa di CGRectZero. È necessario impostare una dimensione nel vostro caso.

Nel UICatalog, se il vostro parlare di come hanno usato CGRectZero per la CustomView ... bene se si guarda a CustomView.m vedrete che sono in realtà trascurando la CGRectZero e impostando una cornice ad una dimensione nella initWithFrame:

Altri suggerimenti

ho preso due componenti in raccoglitrice e due allineamenti per impostare il titolo delle righe in un particolare componente.

Di seguito il codice mostrerà pickerdata nel centro con font di default e fontsize del selettore. Darà esatto comportamento con il centro allineamento del pickerdata visualizzazione pickerdata.

Qui,

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

Si dovrebbe commentare qui sotto menzione metodo UIPickerView delegato se si utilizza sopra il metodo ...

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

L'output del codice di esempio sopra sarà simile seguente

alt text

In iOS 6, ora è possibile restituire un NSAttributedString, che può contenere gli attributi di allineamento del testo. Ho pubblicato un breve frammento su un'altra domanda relativa qui: https://stackoverflow.com/a/14035356/928963

Assicurati di:

  • Fornire un telaio esplicita che è alto e largo come necessario;
  • Imposta visualizzazione opacità dell'etichetta (via .opaque = SI o NO) e il colore di sfondo in modo appropriato (di solito si desidera NO e [UIColor clearColor], rispettivamente).
  • Imposta il tipo di carattere in modo esplicito.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top