当前位置:  开发笔记 > IOS > 正文

保存UIFont?到UserDefault Swift 3

如何解决《保存UIFont?到UserDefaultSwift3》经验,为你挑选了1个好方法。



1> vadian..:

您无法(UI)Font 直接保存到用户默认值,因为它不符合属性列表.

一个合适的解决方案是分别保存字体的String名称和Float大小.这可以通过以下扩展来实现UserDefaults:

extension UserDefaults {

    func set(font : UIFont, forKey key : String)
    {
        let fontName = font.fontName
        let fontSize = font.pointSize
        self.set(fontName, forKey: key + "_name")
        self.set(Float(fontSize), forKey: key + "_size")
    }

    func font(forKey key : String) -> UIFont?
    {
        guard let fontName = string(forKey: key + "_name") else { return nil }
        let fontSize = float(forKey: key + "_size")
        if fontSize == 0.0 { return nil }
        return UIFont(name: fontName, size: CGFloat(fontSize))
    }
}

或者 - 也可以使用扩展名 - 归档并取消归档字体NSData:

extension UserDefaults {

    func set(font: UIFont, forKey key: String)
    {
        let data = NSKeyedArchiver.archivedData(withRootObject: font)
        self.set(data, forKey: key)
    }

    func font(forKey key: String) -> UIFont?
    {
        guard let data = data(forKey: key) else { return nil }
        return NSKeyedUnarchiver.unarchiveObject(with: data) as? UIFont
    }
}

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有