destra allineare il testo in UIPickerView
-
05-09-2019 - |
Domanda
Come posso allineare a destra il testo in un UIPickerView
? Ho provato a fare UILabel
s 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
.
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
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.