Подтвердить что ты не робот

Как изменить шрифт текста в UIPickerView в iOS 7?

Мне удалось изменить цвет шрифта, но мне также нужно изменить размер шрифта, как я могу это сделать? Здесь мой код для выделения цвета,

 - (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component {
    NSString *title = _currencyName[row];
    NSAttributedString *attString = [[NSAttributedString alloc] initWithString:title attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}];

    return attString;
 }

UPDATE: это не сработало:

 NSAttributedString *attString = [[NSAttributedString alloc] initWithString:title attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor], NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue-Light" size:40]}];
4b9b3361

Ответ 1

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
    UILabel* tView = (UILabel*)view;
    if (!tView)
    {
       tView = [[UILabel alloc] init];
       [tView setFont:[UIFont fontWithName:@"Helvetica" size:14]];
       //[tView setTextAlignment:UITextAlignmentLeft];
       tView.numberOfLines=3;
    }
    // Fill the label text here
    tView.text=[wishvalues objectAtIndex:row];
   return tView;
}

Ответ 2

Здесь версия Swift, протестированная на iOS8:

Обновление в Swift для iOS8, вы можете добавить это в свой делегат:

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView {

    var pickerLabel = view as? UILabel;

    if (pickerLabel == nil)
    {
        pickerLabel = UILabel()

        pickerLabel?.font = UIFont(name: "Montserrat", size: 16)
        pickerLabel?.textAlignment = NSTextAlignment.Center
    }

    pickerLabel?.text = fetchLabelForRowNumber(row)

    return pickerLabel!;
}

Ответ 3

Вам нужно реализовать метод pickerView:viewForRow:forComponent:reusingView: в делегате сборщика

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
    UILabel* lbl = (UILabel*)view;
    // Customise Font 
    if (lbl == nil) {
          //label size
          CGRect frame = CGRectMake(0.0, 0.0, 70, 30);

          lbl = [[UILabel alloc] initWithFrame:frame];

          [lbl setTextAlignment:UITextAlignmentLeft];

          [lbl setBackgroundColor:[UIColor clearColor]];
           //here you can play with fonts
          [lbl setFont:[UIFont fontWithName:@"Times New Roman" size:14.0]];

   }
      //picker view array is the datasource
   [lbl setText:[pickerViewArray objectAtIndex:row]];


        return lbl;
}

Ответ 4

Вы можете использовать следующий код для установки шрифта pickerview..

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
    UILabel *tView = (UILabel *)view;
    if (!tView){
        tView = [[UILabel alloc] init];
        [tView setFont:[UIFont .....]];//set font 
            // Setup label properties - frame, font, colors etc
            ...
    }
    // Fill the label text here
    ...
    return tView;
}

Ответ 5

Спасибо за @Richard Bown

Будет ли это лучшим ответом для Swift?

func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView {
        if let titleLabel = view as? UILabel {
            titleLabel.text = "Your Text"
            return titleLabel
        } else {
            let titleLabel = UILabel()
            titleLabel.font = UIFont.boldSystemFontOfSize(16)//Font you want here
            titleLabel.textAlignment = NSTextAlignment.Center
            titleLabel.text = "Your Text"
            return titleLabel
        }
    }

Ответ 6

Я думаю, вы должны добавить NSFontAttributeName в свой список attributes, и вы можете использовать метод класса fontWithName:size: UIFont

Ответ 7

let textLabel = view as? UILabel ?? {
    let label = UILabel()
    label.font = UIFont.boldSystemFontOfSize(16)
    label.textAlignment = .Center
    return label
}()
textLabel.text = Array(componentDataSources[component].keys)[row]
return textLabel

Ответ 8

Обновлен для Swift 4:

public func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
    let label = view as? UILabel ?? UILabel()
    label.font = .systemFont(ofSize: 16)
    label.textColor = .white
    label.textAlignment = .center
    label.text = text(for: row, for: component)
    return label
}