iOS 8和iOS 9的系统字体

Val*_*din 6 uifont ios ios8 ios9

我想为我的应用程序支持iOS 8和iOS 9系统.也许iOS 7.我们知道,iOS 7和8的系统字体是Helvetica Neue.但在iOS 9系统中,字体是San-Francisco.如果您没有明确地设置Helvetica字体[UIFont fontWithName:@"HelveticaNeue" size:15];,但是使用[UIFont systemFontOfSize:15];,您将自动获得适用于iOS 7和8的Helvetica以及适用于iOS 9的San-Francisco.这太棒了!对于界面构建器的标签和按钮,您可以设置薄,超薄,中等系统字体.它也很棒.但是如何以编程方式在代码中设置这些超薄,超,中等系统字体?我是否需要为iOS 9和之前的iOS创建一个带分叉的类别?

Ant*_*ine 11

我创建了这个扩展:

import Foundation
import UIKit

enum SystemFontWeight : String {
    case UltraLight = "HelveticaNeue-UltraLight"
    case Thin = "HelveticaNeue-Thin"
    case Light = "HelveticaNeue-Light"
    case Regular = "HelveticaNeue"
    case Medium = "HelveticaNeue-Medium"
    case Semibold = "Helvetica-Bold"
    case Bold = "HelveticaNeue-Bold"
    case Heavy = "HelveticaNeue-CondensedBold"
    case Black = "HelveticaNeue-CondensedBlack"

    var weightValue:CGFloat? {
        if #available(iOS 8.2, *) {
            switch self {
            case .UltraLight:
                return UIFontWeightUltraLight
            case .Thin:
                return UIFontWeightThin
            case .Light:
                return UIFontWeightLight
            case .Regular:
                return UIFontWeightRegular
            case .Medium:
                return UIFontWeightMedium
            case .Semibold:
                return UIFontWeightSemibold
            case .Bold:
                return UIFontWeightBold
            case .Heavy:
                return UIFontWeightHeavy
            case .Black:
                return UIFontWeightBlack
            }
        } else {
            return nil
        }
    }
}

extension UIFont {
    static func systemFontOfSize(fontSize:CGFloat, weight:SystemFontWeight) -> UIFont {
        if #available(iOS 8.2, *) {
            return UIFont.systemFontOfSize(fontSize, weight: weight.weightValue!)

        } else {
            // Fallback on earlier versions
            return UIFont(name: weight.rawValue, size: fontSize)!
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这使得可以应用这样的字体:

myLabel.font = UIFont.systemFontOfSize(14, weight: .Medium)
Run Code Online (Sandbox Code Playgroud)

这将自动为iOS 8和iOS 9设置正确的字体.


Leo*_*ica 5

使用+ systemFontOfSize:weight:.它适用于iOS 8及更高版本.

对于iOS 7,界面构建器设置将起作用,对于代码,您需要创建UIFontDescriptor具有适当权重的代码.

  • `+ systemFontOfSize:weight:`适用于iOS 8.2及更高版本. (3认同)