【发布时间】:2013-09-27 07:44:03
【问题描述】:
如何在 Xcode 5 中添加自定义字体以及如何将项目中的每个标签更改为该字体?因为我听说您只能以编程方式执行此操作?
【问题讨论】:
-
this tutorial 非常有效且快速
如何在 Xcode 5 中添加自定义字体以及如何将项目中的每个标签更改为该字体?因为我听说您只能以编程方式执行此操作?
【问题讨论】:
更好的选择是将新字体添加到您的系统/操作系统字体目录,然后可以从那里将其添加到情节提要中或与 NSAttributed 字符串一起使用。
步骤:
希望有帮助!
【讨论】:
您可以使用以下步骤在 Xcode 中创建自定义字体:
现在,您可以将标签中的字体用作:
[lblName setFont:[UIFont fontWithName:@“CustomFontName” size:14.0]];
【讨论】:
这里的答案很好,但我建议在您的自定义标签中设置尽可能少,并且绝对不要硬编码大小。您可以像这样轻松地做到这一点:
#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
这将尊重您在情节提要中设置的所有其他设置,从而更轻松地管理所有内容。
【讨论】:
您需要使用自定义字体以编程方式设置每个标签。
使用自定义字体:
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);
【讨论】:
extern NSString* const myFontName
const 你有一个对内存的引用。使用#define,您可以在编译开始之前替换您的宏。所以我更喜欢使用#define,对我来说它在你的代码中更具可读性。
我相信您需要使用[UILabel appearance] 代理为您的应用程序中的所有标签设置自定义字体。将以下行添加到您的 AppDelegate didFinishLaunchingWithOptions 函数中,为项目中的所有 UILabels 设置自定义字体。
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 对象具有相同的颜色和字体大小。
【讨论】: