В настоящее время я работаю над программой, которая динамически заполняет представление выбора из моей настройки Core Data. У меня все работает с данными, но проблема, с которой я сталкиваюсь сейчас, - это форматирование моих этикеток.
Средство выбора представлено собственной панелью инструментов на листе действий с кнопкой в правой части панели инструментов. В исходном состоянии видны 2 циферблата. когда кнопка нажата, она меняется на 3 циферблата.
- (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;
}
я вручную установил высоту строки на 32.0f. Я получаю очень странные результаты: некоторые метки во втором компоненте работают отлично. но другие вообще не переносятся, а некоторые просто отображаются как пустое место.
т.е. брюссельская капуста прекрасно обертывается (правый компонент). но молоко и сливки не отображаются (видно только молоко) овощи не отображаются вообще. Где я ошибаюсь в своем коде?