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

Pat*_*ntC 4 uifont swift ios8

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

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

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

sah*_*108 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)!
}}
Run Code Online (Sandbox Code Playgroud)

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


Ian*_*Ian 5

#defineSwift 中不存在,但基本上它所做的就是在编译之前用该文本替换该常量名称的每个实例,这不是很有效。而是用于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)!
}
Run Code Online (Sandbox Code Playgroud)

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

Font.header
Run Code Online (Sandbox Code Playgroud)

并改变大小:

Font.header.fontWithSize(32.0)
Run Code Online (Sandbox Code Playgroud)