如何在iOS 7中更改UIPickerView中的文本字体?

我能够改变我的字体颜色,但我也需要改变字体大小,我怎么能做到这一点? 这里是我的代码,chaning的颜色,

- (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; } 

更新:这不起作用:

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

 - (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; } 

以下是在iOS8上testing的Swift版本:

在Swift for 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!; } 

你需要在pickerView:viewForRow:forComponent:reusingView:实现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; } 

你可以使用下面的代码来设置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; } 

感谢@Richard Bown

这将是一个更好的答案斯威夫特?

 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 } } 

我认为你必须在你的attributes列表中添加NSFontAttributeName ,你可以使用类方法fontWithName:size: of UIFont

 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 

更新了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 }