如何在 swift 中将 UIFont 定义为常量值

how to define UIFont as constant value in swift

我想在 swift 中将 UIFont 定义为常量值,这样我就可以重用它的应用程序以使其保持一致。我已经在 #define HelveticaNeue [UIFont fontWithName:@"HelveticaNeue" size:13.0] 的 Objective-C 中使用了这个我想要在 swift 中使用这个代码。我怎样才能得到这个。

我在 swift 中使用 let 定义常量,它适用于字符串,但不适用于 UIFont 或任何其他对象。

我也尝试过其他关键字,如 static、extern、var 等,但都没有成功。

struct FontHelper {
static func defaultRegularFontWithSize(size: CGFloat) -> UIFont {
    return UIFont(name: "SourceSansPro-Regular", size: size)!
}

static func defaultLightFontWithSize(size: CGFloat) -> UIFont {
    return UIFont(name: "SourceSansPro-Light", size: size)!
}

static func defaultSemiBoldFontWithSize(size: CGFloat) -> UIFont {
    return UIFont(name: "SourceSansPro-Semibold", size: size)!
}}

使用方法:let font = FontHelper.defaultRegularFontWithSize(15).

#define 在 Swift 中不存在,但基本上它所做的只是在编译之前用该文本替换该常量名称的每个实例,这不是很有效。而是使用 let header = UIFont(name: "someFont", size: 20.0)! 在 Swift 中定义常量。我会尽量避免定义全局常量,但你如何使用它的范围取决于你。就个人而言,我使用带有静态常量的 Font 结构来存储我所有的字体:

// MARK: Font Struct
struct Font {
    static let header = UIFont(name: "agbookrounded-medium", size: 20.0)!
    static let subheader = UIFont(name: "AvenirLTStd-Black", size: 16.0)!
    static let body1 = UIFont(name: "AvenirLTStd-Roman", size: 14.0)!
    static let body2 = UIFont(name: "AvenirLTStd-Light", size: 10.0)!
}

并且您使用以下方式访问单个字体:

Font.header

并更改尺寸:

Font.header.fontWithSize(32.0)