如何更改UIPickerView中的字体大小?

我有一个UIPickerView。 这是近200个项目,每个项目都有长文本,所以,我想调整UIPickerView的字体大小。 我怎样才能改变它? 有可能的? 谁能帮我? 谢谢 !

Yuva.M

你需要在pickerView:viewForRow:forComponent:reusingView:实现pickerView:viewForRow:forComponent:reusingView:方法

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

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

对于UIPickerView行的字体调整

 - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { UILabel* pickerLabel = (UILabel*)view; if (!pickerLabel) { pickerLabel = [[UILabel alloc] init]; pickerLabel.font = [UIFont fontWithName:@"SourceSansPro-Semibold" size:16]; pickerLabel.textAlignment=NSTextAlignmentCenter; } [pickerLabel setText:[self.data objectAtIndex:row]]; return pickerLabel; } 

试试这个,应该有所帮助:

  - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{ UILabel* tView = (UILabel*)view; if (!tView){ tView = [[UILabel alloc] init]; // Setup label properties - frame, font, colors etc ... //adjustsFontSizeToFitWidth property to YES tView.minimumFontSize = 8.; tView.adjustsFontSizeToFitWidth = YES; } // Fill the label text here ... return tView; } // altro modo completo sembrerebbe... - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { UILabel *pickerLabel = (UILabel *)view; if (pickerLabel == nil) { CGRect frame = CGRectMake(0.0, 0.0, 80, 32); pickerLabel = [[[UILabel alloc] initWithFrame:frame] autorelease]; [pickerLabel setTextAlignment:UITextAlignmentLeft]; [pickerLabel setBackgroundColor:[UIColor clearColor]]; [pickerLabel setFont:[UIFont boldSystemFontOfSize:15]]; } [pickerLabel setText:[pickerDataArray objectAtIndex:row]]; return pickerLabel; } 

Swift 3 | 自动收缩

设置adjustsFontSizeToFitWidth=trueminimumScaleFactor=0.5

 func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView { var label: UILabel if let view = view as? UILabel { label = view } else { label = UILabel() } label.text = "My Picker Text" label.textAlignment = .center label.font = UIFont.boldSystemFont(ofSize: 20) label.adjustsFontSizeToFitWidth = true label.minimumScaleFactor = 0.5 return label } 

对于目标c

 - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{ UILabel* pickerLabel = (UILabel*)view; if (!pickerLabel){ pickerLabel = [[UILabel alloc] init]; // Setup label properties - frame, font, colors etc [pickerLabel setFont:[UIFont fontWithName:LATO_REGULAR_FONT size:SIZE_SEMIBOLD_FONT]]; pickerLabel.textColor = primaryTextColor; pickerLabel.textAlignment = NSTextAlignmentCenter; } // Fill the label text here pickerLabel.text = self.dataSourceArray[row]; return pickerLabel; } 

对于Swift 2.3

  func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView{ var label = view as! UILabel! if label == nil { label = UILabel() } label.font = LATO_REGULAR_FONT_17 label.text = dataArray[row] as? String label.textAlignment = .Center return label } 

Swift 4.x

 func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView { var label = UILabel() if let v = view { label = v as! UILabel } label.font = UIFont (name: "Helvetica Neue", size: 10) label.text = dataArray[row] label.textAlignment = .center return label }