Obecnie pracuję nad programem, który dynamicznie wypełnia widok pobrania z mojej konfiguracji danych podstawowych. Mam wszystko pod kontrolą danych, ale problemem, na który teraz natrafiłem, jest formatowanie na moich etykietach.UIPickerView z Multiline UILabel
Selektor jest prezentowany z własnym paskiem narzędzi w arkuszu akcji za pomocą przycisku po prawej stronie paska narzędzi. Jego stan początkowy jest widoczny z 2 tarczami. po naciśnięciu przycisku zmienia się na 3 pokrętła.
- (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;
}
Ręcznie ustawiłem wysokość wiersza na 32.0f. Otrzymuję bardzo dziwne wyniki, ponieważ niektóre etykiety w drugim komponencie działają doskonale. ale inne nie owijają się w ogóle, a niektóre po prostu pokazują się jako puste miejsce.
np .: brukselka zawija się dobrze (prawy składnik). ale Mleko i Śmietanka się nie wyświetlają (widać tylko mleko) warzywa w ogóle się nie pojawiają. Gdzie się mylę w moim kodzie?
Dzięki, to naprawdę pomogło mi. –