【问题标题】:iPhone- Set Font list in PickerViewiPhone-在 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

标签: ios objective-c fonts uipickerview


【解决方案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 选项似乎不错,第二个我已经想到但我不能欺骗用户。 :)
猜你喜欢
  • 1970-01-01
  • 2010-11-21
  • 2010-10-01
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多