ios - 从 Storyboard加载时,fontSize 始终为 17

标签 ios objective-c iphone swift uifont

我正在尝试编写一个 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/

相关文章:

ios - 在每个目标的 xib 文件中设置 UIView 的颜色(或其他属性)

iphone - iOS 中的地址簿同步

ios - iOS 上的 PlayReady DRM : Can you copy the decrypted video image to your own GL Context?

ios - 使用执行选择器 - 相同方法两次

ios - child 失去了对 parent 的弱引用

ios - UIBubbleTableView 从 NSBubbleData 获取 didSelectRowAtIndexPath?

android - Titanium studio vs "native"工具 - 更新

ios - 我不能在 Swift 中调用多个应用程序消息

ios - 将 UINavigationController 添加到现有 UIViewController 的正确方法

objective-c - 按对象的 NSDate 属性对对象数组进行排序