Attualmente sto lavorando a un programma che popola una vista di selezione dinamicamente dal mio set di dati di base. Ho tutto funzionante in termini di dati, ma il problema che sto incontrando ora è la formattazione sulle mie etichette.UIPickerView con multilinea UILabel
Il selettore viene presentato con la propria barra degli strumenti in un foglio di azioni con un pulsante sul lato destro della barra degli strumenti. Lo stato iniziale è con 2 quadranti visibili. quando il pulsante viene premuto, passa a 3 quadranti.
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
UILabel *pickerLabel = (UILabel *)view;
CGSize limitSize = CGSizeMake(100.0f, 45.0f);
CGSize textSize;
CGRect labelRect;
NSString *title = @"";
switch (numberOfComponents){
case 2:
{
...gets strings from fetched data (varying length from 4 to 20+)
title = someString
}
case 3:
{
...same as above but for the second set of data.
title = someString
}
}
textSize = [title sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:limitSize lineBreakMode:UILineBreakModeWordWrap];
labelRect = CGRectMake(0, 0, textSize.width, textSize.height);
NSLog(@"length:%i title:%@",[title length],title);
NSLog(@"h:%f w:%f",textSize.height,textSize.width);
if (pickerLabel == nil)
{
pickerLabel = [[[UILabel alloc] initWithFrame:labelRect] autorelease];
[pickerLabel setFont:[UIFont systemFontOfSize:14]];
[pickerLabel setBackgroundColor:[UIColor clearColor]];
[pickerLabel setLineBreakMode:UILineBreakModeWordWrap];
[pickerLabel setTextAlignment:UITextAlignmentCenter];
[pickerLabel setNumberOfLines:2];
}
[pickerLabel setText:title];
return pickerLabel;
}
ho impostato manualmente l'altezza della riga a 32.0f. Ottengo risultati molto strani in quanto alcune delle etichette del secondo componente funzionano perfettamente. ma altri non stanno affatto avvolgendo, e alcuni stanno semplicemente mostrando uno spazio vuoto.
es .: il cavoletto di Bruxelles avvolge bene (componente destro). ma Latte e crema non vengono visualizzate (solo il latte è visibile) le verdure non appaiono affatto. Dove sto andando male nel mio codice?
Grazie, questo mi ha veramente aiutato. –