如何在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 }