在Interface Builder中使用自定义字体devise标签/文本视图

我目前正在一个iPhone项目中,所有的标签/文本视图等应该出现与自定义字体(我使用Xcode 4.2.1)。 我已经做了一些这方面的研究,唯一的解决scheme似乎是将字体文件添加到项目,适当地编辑info.plist文件,并以编程方式设置字体(即通过网点或通过子类化相关的意见)。 在任何情况下,这些方法都不会导致界面生成器使用自定义字体显示文本(它仍然会显示Helvetica)。 使用属性检查器不能select自定义字体。

虽然我不认为我错过了一些东西,但我只是想确保没有别的办法,而不是编程设置字体,这对我必须处理的任务(本地化问题,独特的应用程序devise等等)来说是相当痛苦的。 )。 这将是很好的让界面生成器显示自定义字体..

自定义字体只能以编程方式设置。不幸的是,这被称为界面构build器中的错误,尚未被修复。

在Interface Builder中使用自定义字体可以使用可重用的库。

它使用一个简单的技巧来做到这一点。 将字体(如calibri)设置为您将永远不会在项目中使用的所有UI元素,FontReplacer将自定义字体和标准之间的映射。 所以不需要制作IBOutlets或任何其他graphics。

这里是链接到您可以下载FontReplacer在您的项目中使用的github。 https://github.com/0xced/FontReplacer

另一个问题是解决相同的字体不显示在界面生成器我也发布了可能的解决scheme

从XCode 6开始,它现在看到我需要导入的字体(Lato)。

没有太多的testing,但为纯文本标签工作,不适用于属性的标签。 Atrributed在Interface Builder中显示正常,但在运行时默认为系统字体。

还有更好的方式来在视觉上或者结合文本标签来实现“归属”文本!

这真的很不方便。 在等待这个function的时候,我想这会帮助你组织你的iOS项目的字体代码。

在你用来定义像Common.h这样的全局variables的共享类中,你可以定义你可能使用的字体

 #define FONT_LATO_REGULAR(s) [UIFont fontWithName:@"Lato-Regular" size:s] #define FONT_LATO_LIGHT(s) [UIFont fontWithName:@"Lato-Light" size:s] #define FONT_LATO_BOLD(s) [UIFont fontWithName:@"Lato-Bold" size:s] 

然后,将Common.h(您的共享类)导入到正在实现的类中,通过以下方法为标签设置字体:

 _lblTitle.font = FONT_LATO_BOLD(14.0); 

最后,你可以把所有的字体设置放到一个方法中作进一步修改。

 - (void) setFontForLabels { _lblTitle.font = FONT_LATO_BOLD(14.0); _lblTime.font = FONT_LATO_REGULAR(13.0); _lblLocation.font = FONT_LATO_REGULAR(13.0); } 

它可能会帮助你一点。 请确保您已经将字体导入到Splist文件中。

适用于iOS 5.0及以上版本。

创build一个自定义UI元素( UIButtonUILabelUITextField等)类,只需更改您想要反映更改的情节提要中的特定元素的类名。

以下是自定义button的代码。 你可以做任何你想要的其他元素。

 CustomButtton.h @interface CustomButtton : UIButton @end CustomButtton.m @implementation CustomButtton - (void)awakeFromNib { // Initialization code if ([self isFontBold:self]) { self.titleLabel.font = [UIFont fontWithName:@"LaoUI-Bold" size:self.titleLabel.font.pointSize]; } else { self.titleLabel.font = [UIFont fontWithName:@"LaoUI" size:self.titleLabel.font.pointSize]; } NSLog(@"Fonts:%@",[UIFont familyNames]); } -(BOOL)isFontBold:(UIButton *)sender { UIFont *font = self.titleLabel.font; UIFontDescriptor *fontDescriptor = font.fontDescriptor; UIFontDescriptorSymbolicTraits fontDescriptorSymbolicTraits = fontDescriptor.symbolicTraits; return (fontDescriptorSymbolicTraits & UIFontDescriptorTraitBold); } @end 

现在只需设置字体大小和types(粗体或正常)。 它会自动更新自定义字体的元素。

通过:[UIFont familyNames] – 您可以检查您的自定义字体系列是否包含在应用程序中,或不在.plist文件中定义。

其次:您必须在项目的.plist文件中添加一个密钥,如下图所示:

.plist更改应用程序中的自定义字体支持

我还没有使用早期版本,但是使用XCode 6,如果您的项目中正确安装了字体,并且在Mac上安装字体(例如使用字体书本),则XCode将在字体select器中显示字体,允许您在单个标签中设置多个自定义字体和大小,并且似乎在运行时实际使用正确的字体。

这不是所有的玫瑰。 Interface Builder的属性控件仍然是一团糟。 它经常失去跟踪分配的属性,特别是如果您尝试一次只属于一个以上的段落。 字体颜色不粘贴得很好。 重叠的select只是令人难以置信的混乱,例如如果您的标签有两个段落,两种不同的字体,你select两个,并改变字体大小,它可能会设置一个或两个段落的属性为系统默认。

你可以用属性检查器在故事板或xib中设置自定义字体,请参考故事板中的自定义字体?

您可以使用简单的技巧在界面构build器中使用自定义字体。 这里是描述性的教程,可能会帮助你在这方面点击这里教程