Monospacer 0.6.1

Monospacer 0.6.1

Jeff Kelley维护。



Monospacer

Monospacer是一个为macOS、iOS、tvOS和watchOS创建字体等宽变体的框架。

Version Documentation Carthage compatible License Platform

安装

Swift包管理器

要使用Swift包管理器与Monospacer一起使用,请在您的Package.swift文件中添加一个依赖关系。

dependencies: [
.package(url: "https://github.com/SlaunchaMan/Monospacer.git", from: "0.6.0")
]

CocoaPods

要使用CocoaPods与Monospacer一起使用,请在您的Podfile中添加一个依赖关系

target 'MyAwesomeApp' do
  pod 'Monospacer'
end

然后运行pod install,并使用生成的.xcworkspace文件打开您的项目。

Carthage

要使用Monospacer配合Carthage,请在您的Cartfile中添加依赖项。

github "SlaunchaMan/Monospacer"

运行carthage update来构建框架。然后按照Carthage的README中的其余步骤将框架添加到项目中,配置运行脚本构建阶段等。

手动

要手动将Monospacer集成到您的项目中,将Monospacer.swift拖放到您的Xcode项目中,并将其添加到您希望使用它的所有目标中。

使用Monospacer

Swift

要使用Monospacer,使用UIFont(对于macOS是NSFont)上的扩展。

let newFont = try? myFont.withMonospaceDigits()

您还可以在字体描述符上使用它来添加等宽数字属性(如果您需要在将其用于创建字体之前对描述符进行其他修改,则很有用)。

let newFontDescriptor = myFontDescrpitor.withMonospaceDigits

Objective-C

Monospacer还可以与Objective-C配合使用。

UIFont *newFont = [myFont fontWithMonospaceDigitsError:NULL];

UIFontDescriptor *newFontDescriptor = myFontDescriptor.descriptorForMonospaceDigits;

错误处理

并非所有字体都支持等宽数字。在字体不支持此功能的情况下,Monospacer会抛出MonospacerError.fontUnsupported错误。在macOS上,如果字体创建失败,Monospacer会抛出MonospacerError.fontCreationFailed错误。您可以在Swift或Objective-C中处理这些错误。

// Swift
do {
    let font = try someFont.withMonospaceDigits()
}
catch MonospacerError.fontUnsupported {
    NSLog("Whoops! This font isn't supported!")
}
catch MonospacerError.fontCreationFailed {
    NSLog("Uh-oh. Creating this font failed.")
}
catch {
    fatalError("Unexpected error: \(error.localizedDescription)")
}
// Objective-C
NSError *error = nil;
UIFont *font = [font fontWithMonospaceDigitsError:&error];

if (font == nil) {
    if (error.domain == MonospacerErrorDomain &&
        error.code == MonospacerErrorFontUnsupported) {
        NSLog(@"Whoops! This font isn't supported!");
    }
}

如果您不关心这些错误,可以安全地忽略它们。

let newFont = try? font.withMonospaceDigits()

myLabel.font = newFont ?? font