您将如何在 Xcode 5 中添加自定义字体以及如何将项目中的每个标签更改为该字体?因为我听说您只能以编程方式执行此操作?
6 回答
您需要使用自定义字体以编程方式设置每个标签。
要使用自定义字体:
1/ 在项目中添加自定义字体,如资源(字体 .ttf 或 .otf)
2/ 在您的 info.plist 添加关键 UIAppFonts(应用程序提供的字体)和每个自定义字体的名称(例如:SohoGothicStd.ttf)
3/ 你可以创建宏来使用你的字体
#define FONT_SOHO_STD(s) [UIFont fontWithName:@"SohoGothicStd" size:s]
4/将此宏用于标签示例:
_myLabel.font = FONT_SOHO_STD(15.0f);
我相信您需要使用[UILabel appearance]
代理为您的应用程序中的所有标签设置自定义字体。将以下行添加到您的函数中,为项目中的所有 sAppDelegate
didFinishLaunchingWithOptions
设置自定义字体。UILabel
UIFont *newFont = [UIFont fontWithName:@"My-Custom-Font-Name" size:14];
[[UILabel appearance] setFont:newFont];
注意:您需要确保您的字体在您的 Xcode 项目中。
您可以按照以下步骤将自定义字体添加到项目中。
Xcode
使用作为资源将您的自定义字体文件添加到您的项目中- 为您的文件添加一个
Info.plist
名为UIAppFonts
. - 将此键设为数组
- 对于您拥有的每种字体,输入字体文件的全名(包括扩展名)作为
UIAppFonts
数组的项目 - 节省
Info.plist
是的,您需要通过代码来完成。我认为 XCode5 没有添加任何类似的新功能。要以编程方式执行以下操作:
创建一个作为 UILabel 子类的类,然后说你有类似 Title 的东西,它的字体大小为 14,Helverica-Bold
在 .h 文件中
#import <UIKit/UIKit.h>
@interface MyLabel : UILabel {
}
@end
在 .m 文件中
#import "MyLabel.h"
@implementation MyLabel
- (id)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self) {
self.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];
}
return self;
}
@end
另一个不使用单独子类的例子
-(UILabel *) myTitleLabel {
UILabel *label = [[UILabel alloc] init];
label.backgroundColor=[UIColor clearColor];
[label setFont:[UIFont fontWithName:@"Helvetica-Bold" size:14]];
label.textColor=[UIColor colorWithRed:(79.0 / 255.0) green:(79.0 / 255.0) blue:(79.0 / 255.0) alpha: 1];
[label setTextAlignment:NSTextAlignmentLeft];
[label sizeToFit];
return label;
}
然后您可以使用 myTitleLabel 类创建一个对象,以便所有 titleLabel 对象具有相同的颜色和字体大小。
更好的选择是将新字体添加到您的系统/操作系统字体目录,然后可以从那里将其添加到情节提要中或与 NSAttributed 字符串一起使用。
脚步:
- 下载您的字体 .ttf 文件
- 转到情节提要中的任何标签/文本视图,然后在右上角的属性检查器中选择:“文本”然后选择 >“属性”
- 单击字体名称旁边的小 T 图标以打开字体编辑器
- 转到 cog/wheel/setting 图标并选择“管理字体”
- 单击右数第二个“+”按钮并导航到您的字体 .ttf 文件以添加到系统字体集合
- 现在通过更改情节提要或代码中的字体名称来使用您的字体:)
希望有帮助!
这里的答案很好,但我建议在您的自定义标签中设置尽可能少,并且绝对不要硬编码大小。您可以像这样轻松地做到这一点:
#import "CustomFontLabel.h"
@implementation CustomFontLabel
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self setFontStyle];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self setFontStyle];
}
return self;
}
- (void)setFontStyle {
CGFloat fontSize = self.font.pointSize;
[self setFont:[UIFont fontWithName:@"LindenHill" size:fontSize]];
}
@end
这将尊重您在 Storyboard 中设置的所有其他设置,从而更轻松地管理所有内容。