我想在iOS应用中保留自定义字体。目前,我使用的是iOS默认字体。 有没有可能的方法呢?
如何包含自定义字体以便我可以使用它?
答案 0 :(得分:14)
制作类别:
#import "UILabel+Helper.h"
@implementation UILabel (Helper)
- (void)setSubstituteFontName:(NSString *)name UI_APPEARANCE_SELECTOR {
self.font = [UIFont fontWithName:name size:self.font.pointSize]; }
@end
然后在AppDelegate.m中:
[[UILabel appearance] setSubstituteFontName:@"SourceSansPro-Regular"];
即使在UIButton
,UILabel
,UITableViewCell
,UICollectionViewCell
,UIView
,UIContainerView
内,也会改变整个应用中的字体,或者应用程序中的任何位置,无需更改字体磅值。
这是一种节省内存的方法,而不是枚举UIViewController
中的所有视图。
答案 1 :(得分:9)
将您的字体文件复制到资源
在Info.plist文件中添加一个名为UIAppFonts
的密钥。 (“提供的字体
通过申请“)
将此密钥设为数组
对于您拥有的每种字体,请输入字体文件的全名
(包括扩展名)作为UIAppFonts
数组
保存Info.plist
现在,在您的应用程序中,您只需调用以下方法即可获得与UILabel
和UITextView
等一起使用的自定义字体...
[UIFont fontWithName:@"CustomFontName" size:15];
func allFonts(){
for family in UIFont.familyNames(){
println(family)
for name in UIFont.fontNamesForFamilyName(family.description)
{
println(" \(name)")
}
}
}
UILabel
中更改整个应用程序的字体: 在 AppDelegate.m
中添加代码- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
[[UILabel appearance] setFont:[UIFont fontWithName:@"YourFontName" size:17]];
...
}
viewConroller
字体,与视图设计中设置的字体大小相同: - (void)viewDidLoad
{
[super viewDidLoad];
[self setFontFamily:@"YourFontName" forView:self.view andSubViews:YES];
}
-(void)setFontFamily:(NSString*)fontFamily forView:(UIView*)view andSubViews:(BOOL)isSubViews
{
if ([view isKindOfClass:[UILabel class]])
{
UILabel *lbl = (UILabel *)view;
[lbl setFont:[UIFont fontWithName:fontFamily size:[[lbl font] pointSize]]];
}
if (isSubViews)
{
for (UIView *sview in view.subviews)
{
[self setFontFamily:fontFamily forView:sview andSubViews:YES];
}
}
}
答案 2 :(得分:1)
1- Drag&将字体文件.ttf删除到您的项目
2-验证字体是否在项目中。
选择字体,并在“工具”区域中验证“目标成员资格”。
3-在plist中添加信息
4-在委托中添加此代码
[[UILabel appearance] setFont:[UIFont fontWithName:@"YourFontName" size:11.0]];
[[UITextField appearance] setFont:[UIFont fontWithName:@"YourFontName" size:11.0]];
[[UITextView appearance] setFont:[UIFont fontWithName:@"YourFontName" size:11.0]];
我希望这会有所帮助
答案 3 :(得分:1)
好的,从所有其他答案中,您现在非常熟悉如何将自定义字体(iOS默认字体除外)添加到应用程序中。
那么现在呢?有一件事仍然存在,我不确定你是否想在任何地方使用相同大小的自定义字体。如果是的话,
我正在使用这种方式在我的应用中使用自定义字体。
如果您的应用只有一个自定义字体,那么您就可以像这样使用整个应用。
#define appFontBold(x) [UIFont fontWithName:@"CustomFont-Bold" size:x]
#define appFontLight(x) [UIFont fontWithName:@"CustonFont-Light" size:x]
#define appFontRegular(x) [UIFont fontWithName:@"CustonFont-Regular" size:x]
我已全局添加这些宏(因此可以从任何地方访问它)
你可以像这样使用它,yourLabel.font = appFontRegular(12);
或yourTextField.font = appFontBold(14);
这可以帮助你处理以下情况,
[UIFont fontWithName: size:]
;无处不在。如果您的应用有多种自定义字体,那么您就可以像这样使用整个应用。
然后你也可以定义不同的宏,
然后上面的宏将是相同的(因为这是应用程序中使用的最大字体),对于其他字体:
#define appFontBoldOtherFont(x) [UIFont fontWithName:@"CustomOtherFont-Bold" size:x]
#define appFontLightOtherFont(x) [UIFont fontWithName:@"CustonOtherFont-Light" size:x]
#define appFontRegularOtherFont(x) [UIFont fontWithName:@"CustonOtherFont-Regular" size:x]
答案 4 :(得分:-1)
将自定义字体添加到项目中,即将字体文件(CALIBRIZ_0.TTF)拖动到XCode项目中。
修改Info.plist
:添加一个包含“Fonts provided by application
”键的新条目。
对于您的每个文件,请将文件名添加到此array
现在将字体设置为label
yourLabel.font = [UIFont fontWithName:@"Calibri" size:15];
答案 5 :(得分:-2)
如果要在一个地方更改所有UILabel的所有字体,则需要创建一个UILabel类别。
例如:
#import <UIKit/UIKit.h>
@interface UILabel (AppFont)
@end
@implementation UILabel (AppFont)
-(void)awakeFromNib
{
self.font = [UIFont fontWithName:@"yourCustomFont" size:self.font.pointSize];
}
@end
创建类别后,您需要为所有文件导入此类,或者您可以将其添加到项目的“.pch”文件中。
按钮/ textview的相同解决方案..