iOS 7 中的自定义字体

     2023-03-15     164

关键词:

【中文标题】iOS 7 中的自定义字体【英文标题】:Custom fonts in iOS 7 【发布时间】:2014-03-11 08:38:47 【问题描述】:

我正在开发一款游戏,我想在我的应用中使用自定义字体。如果这很重要,我正在使用 SpriteKit。我试过使用这个https://github.com/deni2s/IBCustomFonts,但我无法让它使用这个字体http://www.fontspace.com/freaky-fonts/emulogic

我尝试了各种方法,并在应用程序的 info.plist 上注册了字体...有人知道发生了什么吗?

【问题讨论】:

在代码中使用字体时,您确定使用了正确的字体名称吗? 这个博客可能对你有帮助codewithchris.com/… 【参考方案1】:

首先我假设 SpriteKit 没有任何区别。

    您需要将 .otf 或 .ttf 格式的字体复制到您的项目中。例如在支持文件中。 您需要编辑 .plist 文件。将 “应用程序提供的字体” 键添加到您的 plist 中,并在 Item 0 中将您复制的字体的确切文件名复制到带有扩展名的支持文件中。例如:“JosefinSansStd-Light_0.otf” 确保您导入应用程序的字体被打包到应用程序本身。选择您的Target,然后选择Build Phases,然后选择Copy Bundle Resources。如果您没有在其中看到您的字体,请将其从 Supporting Files 中拖动。

最后,您希望在应用启动时列出所有字体,以便查看您的字体的可用名称。您将使用这段小代码来做到这一点:

NSArray *fontFamilies = [UIFont familyNames];
for (int i = 0; i < [fontFamilies count]; i++)

    NSString *fontFamily = [fontFamilies objectAtIndex:i];
    NSArray *fontNames = [UIFont fontNamesForFamilyName:[fontFamilies objectAtIndex:i]];
    NSLog (@"%@: %@", fontFamily, fontNames);

在打印结果中搜索您的字体,例如,我会搜索“Josefin”,我会看到实际的字体名称是“JosefinSansStd-Light”。之后,您只需要通过以下方式使用该字体:

UIFont *customFont = [UIFont fontWithName:@"JosefinSansStd-Light" size:20];

在 iOS8 中,您 add your fonts 直接进入项目,它们在界面构建器中可见。 修改您的代码以解决此问题,但以编程方式为 iOS7 设置字体并在 xCode6 界面构建器中选择它。 PS。 xCode6 中的界面生成器为您提供正确的字体名称,您可以将其复制粘贴到下面的代码中。

#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

 if(SYSTEM_VERSION_LESS_THAN(@"8.0"))
    
        UIFont *customFont = [UIFont fontWithName:@"OpenSans-Light" size:32];
        self.registerLabel.font = customFont;  
    

希望这会有所帮助,干杯。

【讨论】:

谢谢!我得到了它!问题是我不想将它添加到支持文件中,所以它没有加载:P 我不得不使用UIAppFonts的plist键 我重新创建了我的应用程序,整个项目从 iOS7/Xcode 5.1.1 到 iOS8/Xcode 6.0 项目。在我执行 2.step 之前,自定义字体没有显示。 Gr8解释! 在 Swift 中获取字体名称的代码相同:let fontFamilies = UIFont.familyNames() for familyName in fontFamilies let fontNames = UIFont.fontNamesForFamilyName(familyName as String) println("\(familyName): \(fontNames)") 一些用于打印所有字体名称的快速代码:for name in UIFont.familyNames() debugPrint(UIFont.fontNamesForFamilyName(name)) 【参考方案2】:

使用自定义字体没问题,我做到了。请按以下步骤操作:

    在 info.plist 中注册字体,添加“应用程序提供的字体”条目。输入字体文件名,而不是字体名。比如 font.ttf(我想你已经这样做了) 在项目导航器上进入你的项目,点击项目名称并进入“构建阶段”然后在“复制捆绑资源”中往下看,到底部,有很多文件并搜索“+ “ 标志。将打开一个弹出窗口,其中包含您的项目文件。搜索您的字体文件并将其添加到包中。 最后检查字体名称。在代码中使用它时,必须使用字体名称,而不是文件名。要知道字体名称,请在 Finder 中双击字体文件,然后会打开一个显示字体的窗口。检查该窗口标题,这是您必须使用的字体的名称。

建议,将该名称作为宏添加到您的 ..Prefix.pch 文件中。如果您必须多次使用该字体,在您的项目中使用它会更容易。

我认为您遇到的问题是您正确注册了字体,但未将其复制到应用程序包中。因此,当应用程序执行时,它找不到字体。这就是为什么第 2 步很重要的原因。第一次我花了很多时间试图弄清楚:)

【讨论】:

对我来说关键是字体的标题。谢谢!【参考方案3】:

如果您使用的是 Xcode 6,那么它就非常简单。只需将font 文件夹添加到您的项目中,将您的字体添加到文件夹中,您就可以开始了。

【讨论】:

确保您也将其添加到您的预期目标中。鬼鬼祟祟的霍比特人 Xcode。【参考方案4】:

快速实现这一目标

如果您想在应用启动时列出所有字体,只是为了查看字体的可用名称。你可以用这段代码做到这一点:

    UIFont.familyNames.forEach 
        print("fontFamily: \($0), fonts: \(UIFont.fontNames(forFamilyName: $0))")
    

【讨论】:

UIFont.familyNames.forEach print("fontFamily: \($0), fonts: \(UIFont.fontNames(forFamilyName: $0))") 【参考方案5】:

也许是一个快速修复 - 当字体已经工作时,这为我做了,但是一个新的,例如标签未显示所需的字体:

清理、深度清理并清空派生数据文件夹。

【讨论】:

【参考方案6】:

经过多次尝试,我始终无法得到这些工作的答案。我曾经在其中获得自定义字体以遵循已接受答案中的说明的唯一方法,然后在使用该字体的故事板中创建一个隐藏标签。我可以以编程方式使用字体。我知道这很奇怪,但它对我有用。

【讨论】:

你是对的。我查看了许多教程中的所有内容,包括 plist、目标项目的复选标记、构建阶段,最后找到了正确的字体系列名称,但它仍然无法正常工作。然后我按照你说的添加了一个隐藏标签,最后它出现了。我正在使用 Xcode 7.2,它一定是一个错误。【参考方案7】:

如果上述方法都不适合您,并且您碰巧仅“以编程方式”使用自定义字体(即您没有在任何 xib 中使用它),那么您将需要至少在某个地方使用它一次xib,任何地方。

(PS Stuart Clark - 已经回答了这个问题,所以请不要感谢我。但是,我决定重新措辞并将其作为单独的答案发布,因为我错过了他的答案,当我读到它时我并不清楚. 我在 xib 中测试自定义字体时偶然发现了这个解决方案,我看到它在其他地方以编程方式工作,但是当我从 xib 中删除字体时,它以编程方式停止工作。)

【讨论】:

【参考方案8】:

为 Swift 3 更新。

let fontFamilies:[String] = UIFont.familyNames

for fontFamily: String in fontFamilies 
    let fontNames: [String] = UIFont.fontNames(forFamilyName: fontFamily)
    print("\(fontFamily)  \(fontNames)");

【讨论】:

【参考方案9】:
please try below code.
@end
@implementation UILabel (CustomFont)
-(void)setFontName:(NSString *)value
CGFloat newsize = (self.font.pointSize * [UIScreen mainScreen].bounds.size.width)/320;
[self setFont:[UIFont fontWithName:self.font.fontName size:newsize]];

@end
@implementation UITextField (CustomFont)
-(void)setFontName:(NSString *)value
CGFloat newsize = (self.font.pointSize * [UIScreen mainScreen].bounds.size.width)/320;
[self setFont:[UIFont fontWithName:self.font.fontName size:newsize]];

@end
@implementation UIButton (CustomFont)
-(void)setFontName:(NSString *)value
CGFloat newsize = (self.titleLabel.font.pointSize * [UIScreen mainScreen].bounds.size.width)/320;
[self.titleLabel setFont:[UIFont fontWithName:self.titleLabel.font.fontName size:newsize]];

@end
@end

@interface UILabel (CustomFont)
-(void)setFontName:(NSString *)value;
@end
@interface UITextField (CustomFont)
-(void)setFontName:(NSString *)value;
@end
@interface UIButton (CustomFont)
-(void)setFontName:(NSString *)value;
@end

【讨论】:

iOS 7 中的自定义 UIPickerView 崩溃

】iOS7中的自定义UIPickerView崩溃【英文标题】:CustomUIPickerViewcrashiniOS7【发布时间】:2013-11-2608:33:57【问题描述】:我制作了一个CustomUIPickerViewwiththreeComponentseachshowinglabelonSelectionIndicator,它在iOS6中运行良好。但我在iOS7中遇到了崩... 查看详情

iOS 7 中的自定义后退指示器图像未垂直居中

】iOS7中的自定义后退指示器图像未垂直居中【英文标题】:CustombackindicatorimageiniOS7notverticallycentered【发布时间】:2014-02-1018:03:41【问题描述】:我正在使用以下代码为我的iOS7应用程序中的后退指示器使用自定义图像:UIImage*temp=... 查看详情

Xamarin 表单:UWP 和 Windows 8.1 中的自定义字体

】Xamarin表单:UWP和Windows8.1中的自定义字体【英文标题】:Xamarinforms:CustomFontsinUWPandWindows8.1【发布时间】:2017-06-0118:00:08【问题描述】:我正在开发一个使用font.otf文件的应用程序。我的应用程序将在android、ios、windows10和windows8.1... 查看详情

ios中Mkmapview中的自定义标注

】ios中Mkmapview中的自定义标注【英文标题】:customcalloutinMkmapviewinios【发布时间】:2013-04-0510:30:42【问题描述】:我必须在ios中的注释点击上显示自定义视图,我必须在自定义视图中显示7个图像、名称和详细信息披露按钮。单击... 查看详情

Interface Builder 中的自定义字体

】InterfaceBuilder中的自定义字体【英文标题】:CustomfontsinInterfaceBuilder【发布时间】:2014-03-2823:05:31【问题描述】:现在是2014年,有没有办法在InterfaceBuilder中设置自定义字体?即不要以编程方式进行,除了应用程序列表中的“应... 查看详情

Xcode Playground 中的自定义字体

】XcodePlayground中的自定义字体【英文标题】:CustomfontsinXcodeplayground【发布时间】:2014-12-1418:41:48【问题描述】:我正在用代码编写界面布局。因为每次我测试字体大小或逐像素查看布局时重新加载应用程序很烦人,所以我开始... 查看详情

ios 7 中带有一个组件的自定义 UIPickerView

...时间】:2014-02-2806:20:48【问题描述】:我对整个应用程序中的所有xib使用标准UIPickerView和一个组件。所以,我已经在所有页面中编写了UIPcikerview生成,但我需要使用一个组件创建一个自定义UIPickerview,并且我需要在我的整个应用... 查看详情

Pixi.js 中的自定义字体

】Pixi.js中的自定义字体【英文标题】:CustomfontinPixi.js【发布时间】:2013-09-3022:09:03【问题描述】:我尝试将自定义字体加载到Pixi.js(2DWebGL框架)中。他们有一个使用.woffgoogle字体的例子:https://github.com/GoodBoyDigital/pixi.js/tree/mast... 查看详情

iPhone中的自定义字体

】iPhone中的自定义字体【英文标题】:CustomfontiniPhone【发布时间】:2011-09-0709:20:24【问题描述】:我是iphone主题开发的新手,我想知道如何在iphone上使用自定义TTF或OTF字体,例如一种用于电话板的字体类型,另一种用于消息等...... 查看详情

Google Colaboratory matplotlib 图表中的自定义字体

】GoogleColaboratorymatplotlib图表中的自定义字体【英文标题】:CustomfontsinGoogleColaboratorymatplotlibcharts【发布时间】:2019-01-1912:13:59【问题描述】:在本地使用matplotlib中的自定义字体涉及将.ttfs存储在matplotlib/mpl-data/fonts/ttf/文件夹中,... 查看详情

Next.js + Tailwind 中的自定义字体:没有错误,但字体错误

】Next.js+Tailwind中的自定义字体:没有错误,但字体错误【英文标题】:CustomfontinNext.js+Tailwind:noerror,butwrongfont【发布时间】:2020-10-1114:39:18【问题描述】:在我的Next.js(9.4.4)/Tailwind.css(1.4.6)项目中,我使用了一种名为SpaceGrotesk的自... 查看详情

Android 中的自定义字体在不同 API 中的呈现方式不同

】Android中的自定义字体在不同API中的呈现方式不同【英文标题】:CustomFontinAndroidrendersdifferentlyindifferentAPIs【发布时间】:2012-06-1218:02:47【问题描述】:我在我的android应用程序中使用自定义.ttf字体。我以通常的方式加载它:myTyp... 查看详情

iOS自定义字体在不同语言中的垂直对齐

】iOS自定义字体在不同语言中的垂直对齐【英文标题】:VerticalalignmentofiOScustomfontindifferentlanguages【发布时间】:2013-12-0206:33:57【问题描述】:我在我的iOS应用程序中使用了一种名为ClassicRobot的自定义.ttf字体。我正在尝试添加日... 查看详情

批处理文件中的自定义字体[关闭]

】批处理文件中的自定义字体[关闭]【英文标题】:Customfontinbatchfile[closed]【发布时间】:2022-01-0705:24:41【问题描述】:我目前正在批量制作文本用户界面/TUI。我希望命令提示符(控制台)中的字体与默认的Windows字体完全相同,... 查看详情

Xcode 6 大小类中的自定义字体大小无法与自定义字体一起正常工作

】Xcode6大小类中的自定义字体大小无法与自定义字体一起正常工作【英文标题】:CustomFontSizinginXcode6SizeClassesnotworkingproperlywithCustomFonts【发布时间】:2014-11-2718:59:27【问题描述】:Xcode6有一个新功能,其中UILabel、UITextField和UIButto... 查看详情

如何为android中的所有视图使用相同的自定义字体?

】如何为android中的所有视图使用相同的自定义字体?【英文标题】:howtouseasamecustomfontfaceforalltheviewinandroid?【发布时间】:2013-10-0812:49:52【问题描述】:我想使用android中具有相同字体类型的所有组件,为此我正在为每个组件创... 查看详情

Android API中的自定义字体低于16?

】AndroidAPI中的自定义字体低于16?【英文标题】:CustomfontsinAndroidAPIbelow16?【发布时间】:2014-10-0111:16:21【问题描述】:我正在开发我的第一个大于一个活动的Android应用程序。我读过这个:Android4.1添加了更多Roboto字体样式的变体... 查看详情

mongoose 5.7.0 中的自定义验证

】mongoose5.7.0中的自定义验证【英文标题】:Customvalidationsinmongoose5.7.0【发布时间】:2020-01-1907:32:05【问题描述】:以前我使用的是旧版本的mongoose,即4.3.7,并且自定义模式验证作为预保存挂钩运行良好。我所要做的就是将错误... 查看详情