iPhone-在 PickerView 中设置字体列表

Posted

技术标签:

【中文标题】iPhone-在 PickerView 中设置字体列表【英文标题】:iPhone- Set Font list in PickerView 【发布时间】:2014-03-04 14:47:58 【问题描述】:

我必须在 Pickerview 中显示字体列表。当我在选取器视图委托方法中设置字体数组时,名为“Bodoni Ornaments”的字体之一在选取器视图标签中变形,其余所有字体都可以正常显示。

请看图:

我通过这段代码获取字体列表:

#pragma mark- Font Array return methods 

-(NSArray*)fontFamilyArrayReturnMethod

    NSLog (@"Font families: %@", [UIFont familyNames]);
    return [UIFont familyNames];

Picker View Delegate 方法代码:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5, 0, pickerView.frame.size.width-7, 44)];
    label.backgroundColor = [UIColor clearColor];
    label.textColor = [UIColor blackColor];
    label.textAlignment = NSTextAlignmentCenter;
    label.font = [UIFont fontWithName:[arrayContainFontFamily objectAtIndex:row] size:18];
    label.text = [NSString stringWithFormat:@"%@", [arrayContainFontFamily objectAtIndex:row]];
    return label;    

为什么这个字体没有作为文本出现在选取器视图标签中。我需要字体名称文本而不是设计字符。 任何帮助表示赞赏。

【问题讨论】:

什么是arrayContainFontFamily 【参考方案1】:

在 Google 上快速搜索“Bodoni Ornaments”后,字体实际上是这样的,所以行为实际上是正确的。

--编辑-- 现在,您有以下行:

label.font = [UIFont fontWithName:[arrayContainFontFamily objectAtIndex:row] size:18];

这使得字体名称是使用字体本身编写的。如果您希望“Bodoni Ornaments”显示为文本,则必须删除此行。但是,您将无法再预览每种字体。

【讨论】:

我的问题是它应该说文本字体名称而不是pickerview中的设计字符。感谢您的快速响应。 @Nico,确实如此,但该字体是符号。如果你需要它可读,那么你需要使用不同的字体...... 感谢 Kamaros,但我无法使用 Preview。 @Nico 您可以尝试使用 NSAttributedString 来显示字体名称以及示例(即,以 Helvetica 等通用字体显示字体名称,然后在字体本身中显示“ABC”或类似字体),或者只是专门检查 Bodoni Ornaments 并为其使用不同的字体(hacky 并且没有该字体的预览)。 @Kamaros:感谢 NSAttributedString 选项似乎不错,第二个我已经想到但我不能欺骗用户。 :)

以上是关于iPhone-在 PickerView 中设置字体列表的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Pickerview 中设置 inputAccessoryView 工具栏

如何在 iPhone SDK 中使用自定义字体? [复制]

在kivy中设置全局字体大小

如何在 ActionBar 标题中设置自定义字体?

在 Bootstrap 中设置字体颜色

如何在summernote中设置字体大小?