我已经按照步骤在xcode中添加自定义字体,每天都是swift和 自定义字体,但是我无法以编程方式在app标签中设置该字体.
var labeladd = UILabel(frame: CGRectMake(40, 50, 70, 22))
// label.center = CGPointMake(160, 284)
/// labeladd.font=UIFont.boldSystemFontOfSize(15)
labeladd.font = UIFont(name:"Source Sans Pro",size:15)
labeladd.textColor=UIColor.blackColor()
labeladd.textAlignment = NSTextAlignment.Center
labeladd.text = "this is custom fonts"
myview.addSubview(labeladd)
Run Code Online (Sandbox Code Playgroud)
Van*_*ran 109
假设您要添加此字体: SourceSansPro-Regular.otf
三个步骤:
SourceSansPro-Regular.otf到项目中,确保在"添加到目标"中选择目标.
转到目标的Build Phases并确保它位于Copy Bundle Resources下.如果没有,请添加它.

2.转到目标的信息.添加新条目由应用程序提供的字体,然后添加具有此值的新项目SourceSansPro-Regular.otf.

3.打开OS X Font Book应用程序,导航到您的字体,然后按Command + i.请注意PostScript名称并在Swift代码中使用该名称.在这种情况下,它是SourceSansPro-Regular.

所以在你的代码中:
labeladd.font = UIFont(name:"SourceSansPro-Regular", size:15)
tir*_*tea 11
我发现(XCode 12)除非您的字体碰巧已经在 Main.storyboard 中使用,否则即使您已完成在应用程序中注册字体文件的所有正确步骤,复制到您的捆绑资源,使用PostScript 名称,yadda,yadda,它仍然没有出现并且尝试在 UIFont(name: size:) 中使用它仍然会返回 nil。:-(
我通过在 AppDelegate 应用程序(_ 应用程序:didFinishLaunchingWithOptions :) 启动时手动注册所有自定义字体来解决当前的错误(?)
let fonts = Bundle.main.urls(forResourcesWithExtension: "ttf", subdirectory: nil)
fonts?.forEach({ url in
CTFontManagerRegisterFontsForURL(url as CFURL, .process, nil)
})
Run Code Online (Sandbox Code Playgroud)
(改编自Xcode: Using custom fonts inside Dynamic framework )
有时,字体名称不是文件名。我试图使用名称为“ NexaBook”的NexaBook.otf字体,最后问题是该字体的正确名称为“ Nexa-Book”。要检查您使用的名称是否正确,请在viewDidLoad中编写以下代码,然后检查字体的名称:
for family: String in UIFont.familyNames
{
print(family)
for names: String in UIFont.fontNames(forFamilyName: family)
{
print("== \(names)")
}
}
Run Code Online (Sandbox Code Playgroud)
就我而言:
...
Nexa
== Nexa-Book
Avenir Next
== AvenirNext-Medium
== AvenirNext-DemiBoldItalic
== AvenirNext-DemiBold
...
Run Code Online (Sandbox Code Playgroud)
我从向iOS应用程序添加自定义字体的常见错误中得到了这个想法,在这里您可以找到有关使用自定义字体的问题的详尽描述。
如果您在故事板中获取字体但不在字体系列中并且无法以编程方式设置它,则原因是 Xcode 可能未编译该字体。要解决它:
| 归档时间: |
|
| 查看次数: |
16586 次 |
| 最近记录: |