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

时间:2015-03-23 03:31:00

标签: swift ios8 uifont

我想在swift中将UIFont定义为常量值,以便我可以重用它来使其保持一致。我在Objective-C中使用了这个#define HelveticaNeue [UIFont fontWithName:@"HelveticaNeue" size:13.0]我希望这个代码在swift中。我怎么能得到这个。

我已经使用let来定义swift中的常量,它可以在字符串上工作但不能在UIFont或任何其他对象上工作。

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

2 个答案:

答案 0 :(得分:7)

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)

答案 1 :(得分:4)

Swift中不存在

#define,但基本上所做的只是在编译之前用该文本替换该常量名称的每个实例,这不是非常有效。而是使用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)