如何更改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=true
和minimumScaleFactor=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 }