iosswiftfontsprogrammatically-created

How to set text font as System Thin in Swift?


I want to set label text as System Thin. Read in StackOverflow and found an answer like this:

labelDescriptionView.font = UIFont(name: "System-Thin", size: 15.0)

but it did not work. How can I improve my code and make Thin font style programmatically?


Solution

  • The system font in the Interface Builder is the OS default font, it is not a font you can get by it's name. For the system font Apple provides the following methods:

    + (UIFont *)systemFontOfSize:(CGFloat)fontSize;
    + (UIFont *)boldSystemFontOfSize:(CGFloat)fontSize;
    + (UIFont *)italicSystemFontOfSize:(CGFloat)fontSize;
    

    These do not include any thin version but iOS 8.2 onwards you can use:

    + (UIFont *)systemFontOfSize:(CGFloat)fontSize weight:(CGFloat)weight;
    

    Where you can pass: as weights:

    UIFontWeightUltraLight
    UIFontWeightThin
    UIFontWeightLight
    UIFontWeightRegular
    UIFontWeightMedium
    UIFontWeightSemibold
    UIFontWeightBold
    UIFontWeightHeavy
    

    So a thin system font would be:

    UIFont *thinFont = [UIFont systemFontOfSize:15 weight:UIFontWeightThin];