Attributed string with custom fonts in storyboard does not load correctly

后端 未结 16 1869
梦谈多话
梦谈多话 2021-01-30 03:35

We are using custom fonts in our project. It works well in Xcode 5. In Xcode 6, it works in plain text, attributed string in code. But those attributed strings set in storyboard

16条回答
  •  遇见更好的自我
    2021-01-30 04:25

    The fix for me was to use an IBDesignable class:

    import UIKit
    
    @IBDesignable class TIFAttributedLabel: UILabel {
    
        @IBInspectable var fontSize: CGFloat = 13.0
    
        @IBInspectable var fontFamily: String = "DIN Light"
    
        override func awakeFromNib() {
            var attrString = NSMutableAttributedString(attributedString: self.attributedText)
            attrString.addAttribute(NSFontAttributeName, value: UIFont(name: self.fontFamily, size: self.fontSize)!, range: NSMakeRange(0, attrString.length))
            self.attributedText = attrString
        }
    }
    

    Giving you this in the Interface Builder:

    Interface Builder custom font with attributed string

    You can set up your attributedstring just as you normal do, but you'll have to set your fontsize and fontfamily once again in the new available properties.

    As the Interface Builder is working with the custom font by default, this results in a what you see is what you get, which I prefer when building apps.

    Note

    The reason I'm using this instead of just the plain version is that I'm setting properties on the attributed label like the linespacing, which are not available when using the plain style.

提交回复
热议问题