Swift自定义字体Xcode 7

the*_*ma 22 xcode fonts ios swift

我正在使用Swift在Xcode(7.0版Beta)中创建一个游戏,我希望在游戏结尾以"gameOver.ttf"字体显示标签"Game Over".我已将字体添加到我的资源文件夹中.我不知道如何在我的代码中引用它.我能帮忙吗?我的代码:

let label = SKLabelNode(fontNamed: "gameOver")
    label.text = "Game Over"
    label.fontColor = SKColor.redColor()
    label.fontSize = 150
    label.position = CGPointMake(0, 100)
    label.horizontalAlignmentMode = .Center
    node.addChild(label)
Run Code Online (Sandbox Code Playgroud)

Ala*_*din 69

以下是向应用程序添加自定义字体的步骤:

  1. 在你的应用程序中添加"gameOver.ttf"字体(确保它包含在目标中)
  2. 修改application-info.plist文件.
  3. 在新行中添加"应用程序提供的字体"
  4. 并在数组"应用程序提供的字体 "中添加"gameOver.ttf"作为新项目.

现在,字体将在Interface Builder中可用.要在代码中使用自定义字体,我们需要按名称引用它,但名称通常与字体的文件名不同

有两种方法可以找到名称:

  1. 在Mac上安装字体.打开字体簿,打开字体并查看列出的名称.
  2. 以编程方式列出应用程序中的可用字体

对于第二种方法,添加此行是您的应用程序委托 didFinishLaunchingWithOptions

println(UIFont.familyNames())
Run Code Online (Sandbox Code Playgroud)

要列出swift 2中每个字体系列中包含的字体:

class func printFonts() {
    for familyName in UIFont.familyNames() {
        print("\n-- \(familyName) \n")
        for fontName in UIFont.fontNamesForFamilyName(familyName) {
            print(fontName)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

找到自定义字体的名称后,您可以像这样使用它:

SKLabelNode(fontNamed: "gameOver") // put here the correct font name
Run Code Online (Sandbox Code Playgroud)

或者用简单的标签:

cell.textLabel?.font = UIFont(name: "gameOver", size: 16) // put here the correct font name 
Run Code Online (Sandbox Code Playgroud)

有用的资源


Gur*_*ngh 6

Swift 4 和 5。我为应用程序字体创建了一个枚举。首先通过双击所需的字体在系统上安装字体。然后安装的字体将出现在属性检查器中的自定义字体下。

在此输入图像描述

import Foundation
import UIKit

private let familyName = "Montserrat"

enum AppFont: String {
    case light = "Light"
    case regular = "Regular"
    case bold = "Bold"

    func size(_ size: CGFloat) -> UIFont {
        if let font = UIFont(name: fullFontName, size: size + 1.0) {
            return font
        }
        fatalError("Font '\(fullFontName)' does not exist.")
    }
    fileprivate var fullFontName: String {
        return rawValue.isEmpty ? familyName : familyName + "-" + rawValue
    }
}
Run Code Online (Sandbox Code Playgroud)

用法

self.titleLabel?.font = AppFont.regular.size(12.0)
Run Code Online (Sandbox Code Playgroud)