跨cocoa应用程序使用相同字体的设计模式

时间:2014-10-30 13:06:49

标签: cocoa user-interface design-patterns swift

在现有应用中统一字体的最佳方法是什么。我有足够的xib或带有生成控件的视图控制器。

想要定义几个尺寸和一个基本字体。

目前我将它们定义为常量:

#define FONT_NAME        @"Helvetica Neue Light"
#define FONT_SIZE_NORMAL  13
....

但是常量不会在xib中使用,并且需要遍历所有xib并更改字体或从xib唤醒时有一些自定义代码。

正考虑将类别添加到NSFont,甚至是调整systemFontOfSize

是否有一些设计模式可以在cocoa app中很好地完成?

1 个答案:

答案 0 :(得分:0)

在代码中设置字体时,使用NSFont类别是一个不错的选择。 对于xib和故事板,我更喜欢使用'用户定义的运行时属性'。以下示例适用于iOS,但对于MacOS,它将是相同的。

例如标签: 首先,在func fontWithStyle(style:NSNumber) -> (UIFont)类别中创建方法UIFont 然后创建一个包含属性CustomLabel

的子类currentStyle
class CustomLabel: UILabel {
    var currentStyle:NSNumber = 0

    override func awakeFromNib() {
        ...

        self.font = UIFont.fontWithStyle(self.currentStyle)
    }
}

最后,在界面构建器中添加运行时属性currentStyle,如截屏

enter image description here