我正在尝试编写一个 UIFont
扩展,以在 5.5 英寸 iPhone 中显示单词时增加字体大小。听到的是我的代码:
public override class func initialize() {
struct Static {
static var token: dispatch_once_t = 0
}
dispatch_once(&Static.token) {
let originalSelector = Selector("systemFontOfSize:")
let swizzledSelector = Selector("systemFontOfFlexibleSize:")
let originalMethod = class_getClassMethod(self, originalSelector)
let swizzledMethod = class_getClassMethod(self, swizzledSelector)
method_exchangeImplementations(originalMethod, swizzledMethod);
}
}
class func systemFontOfFlexibleSize(fontSize: CGFloat)->UIFont {
print(fontSize)
if UIScreen.mainScreen().bounds.height >= 736.0 {
return self.systemFontOfFlexibleSize(fontSize + 2)
} else {
return self.systemFontOfFlexibleSize(fontSize)
}
}
当我在代码中使用方法 systemFontOfSize
时,效果很好。当我使用 xib 或 Storyboard 创建标签时,仍会调用 systemFontOfFlexibleSize ,但无论我在 Storyboard 中设置什么,fontSize 始终为 17。
有人可以解释这个或任何其他优雅的解决方案吗?
感谢您的帮助,提前致谢。
最佳答案
我记得不久前我也遇到过这个问题,似乎有某种奇怪的错误,字体在代码中设置后立即被重置。我相信我必须设置字体,然后再次设置字体大小才能正常工作。下面是我项目中的一个代码片段(但这有点旧了,所以我不记得这是否真的解决了问题,或者我是否在写这段代码时脑子崩溃了):
label.font = UIFont(name: fontName, size: 14.0)
label.font = label.font.fontWithSize(14)
如果我没记错的话,我必须明确使用 fontWithSize()
设置字体大小,否则它根本不起作用。虽然不完全确定,但我想你至少可以尝试一下。我无法真正将其集成到您的代码中,因为我不完全确定这里幕后发生了什么。
关于ios - 从 Storyboard加载时,fontSize 始终为 17,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35717884/