[英]Change UIPickerView font size for different column
我正在構建一個UIPickerView,它可以與下面的代碼配合使用。
//Title for Row
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
if (component==kNumComponent)
return Number[row];
else if(component==kSeaComponent)
return Season[row];
else
return Course[row];
}
其中Number,Season和Course是存儲字符串的NSArray。 在這里,我想將字體大小當然更改為較小的字體。 我在這里學到了一些例子。
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view {
UILabel *retval = (id)view;
if (!retval) {
retval= [[[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)] autorelease];
}
retval.font = [UIFont systemFontOfSize:22];
retval.text = [pickerViewArray objectAtIndex:row];
return retval;
}
有什么快速的方法可以將上面的代碼合並到我的可用代碼中,以更改字體大小? 說,我想需要在某個地方傳遞“ Retval”嗎?
更新:感謝斯科茨的提示(見下文),我的方法有效,發布在這里:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view {
UILabel *retval = (UILabel*)view;
if (!retval) {
retval = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)];
}
retval.font = [UIFont systemFontOfSize:22];
if (component==kNumComponent)
retval.text = Number[row];
else if(component==kSeaComponent)
{retval.font = [UIFont systemFontOfSize:14];
retval.text = Season[row];}
else
{ retval.font = [UIFont systemFontOfSize:14];
retval.text = Course[row];}
return retval;
}
要自定義選擇器的視圖,必須使用pickerView:viewForRow:
為此,請完全刪除pickerView:titleForRow:
並在pickerView:viewForRow:
,使用您最初在pickerView:titleForRow:
使用的條件設置retval
的文本。
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view {
UILabel *retval = (UILabel*)view;
if (!retval) {
retval = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)];
}
retval.font = [UIFont systemFontOfSize:22];
if (component==kNumComponent)
retval.text = Number[row];
else if(component==kSeaComponent)
retval.text = Season[row];
else
retval.text = Course[row];
return retval;
}
或者,您可以直接使用UIPickerViewDelegate
的pickerView:attributedTitleForRow:forComponent:
方法來編輯標題的字體,而不是創建標簽子視圖,例如:
- (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component
{
NSString *title;
if (component==kNumComponent)
title = Number[row];
else if(component==kSeaComponent)
title = Season[row];
else
title = Course[row];
UIFont *font = [UIFont systemFontOfSize:22];
NSDictionary *attributes = @{NSFontAttributeName:font};
return [[NSAttributedString alloc] initWithString:title attributes:attributes];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.