2015-01-21 2 views
0

Я создаю UIPickerView, который отлично работает с моим следующим кодом.Изменение размера шрифта UIPickerView для разных столбцов

//Title for Row 
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ 

    if (component==kNumComponent) 
     return Number[row]; 
     else if(component==kSeaComponent) 
      return Season[row]; 
     else 
      return Course[row]; 

} 

Где номер, сезон и курс NSArray хранят строку. Здесь я хочу изменить размер шрифта, конечно, на меньший. Я узнал здесь несколько примеров.

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row 
forComponent:(NSInteger)component reusingView:(UIView *)view { 
      UILabel *retval = (id)view; 
      if (!retval) { 
       retval= [[[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)] autorelease]; 
      } 

      retval.font = [UIFont systemFontOfSize:22]; 
      retval.text = [pickerViewArray objectAtIndex:row]; 
     return retval; 
    } 

Есть ли какой-либо быстрый способ комбинировать вышеуказанный код с моим кодом, чтобы изменить размер шрифта, пожалуйста? Скажем, мне нужно пропустить «Retval» где-нибудь?

UPDATE: Спасибо за подсказку SCOTTS (см ниже), у меня есть мой метод работы, размещенные здесь:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row 
      forComponent:(NSInteger)component reusingView:(UIView *)view { 

    UILabel *retval = (UILabel*)view; 
    if (!retval) { 
     retval = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)]; 
    } 

    retval.font = [UIFont systemFontOfSize:22]; 

    if (component==kNumComponent) 
     retval.text = Number[row]; 
    else if(component==kSeaComponent) 
    {retval.font = [UIFont systemFontOfSize:14]; 
     retval.text = Season[row];} 
    else 
    { retval.font = [UIFont systemFontOfSize:14]; 
     retval.text = Course[row];} 

    return retval; 
} 

ответ

7

Чтобы настроить просмотров.Кроме сборщика, вы должны использовать pickerView:viewForRow:. Для этого полностью удалите pickerView:titleForRow: и в пределах pickerView:viewForRow: введите текст retval, используя условное выражение, которое вы изначально использовали в пределах pickerView:titleForRow:.

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row 
forComponent:(NSInteger)component reusingView:(UIView *)view { 

     UILabel *retval = (UILabel*)view; 
     if (!retval) { 
      retval = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)]; 
     } 

     retval.font = [UIFont systemFontOfSize:22]; 

     if (component==kNumComponent) 
      retval.text = Number[row]; 
     else if(component==kSeaComponent) 
      retval.text = Season[row]; 
     else 
      retval.text = Course[row]; 

     return retval; 
} 

Или вместо того, чтобы создать ярлык подвид, вы можете напрямую изменить шрифт в названии, используйте функцию UIPickerViewDelegate «s pickerView:attributedTitleForRow:forComponent: метод, пример:

- (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    NSString *title; 
    if (component==kNumComponent) 
     title = Number[row]; 
    else if(component==kSeaComponent) 
     title = Season[row]; 
    else 
     title = Course[row]; 

    UIFont *font = [UIFont systemFontOfSize:22]; 
    NSDictionary *attributes = @{NSFontAttributeName:font}; 

    return [[NSAttributedString alloc] initWithString:title attributes:attributes]; 
} 
+0

Спасибо за ответ. Но он показывает пустой выбор, что-то нужно изменить, пожалуйста? – user4441082

+0

@ user4441082 Попробуйте удалить «autorelease». –

+0

Еще раз спасибо. Второй метод метода работает нормально. Еще один вопрос: если мне нужен другой размер шрифта для разных компонентов, как его исправить? – user4441082

Смежные вопросы