Ios 如何使用UIView在swift中显示字体的字体规则?

Ios 如何使用UIView在swift中显示字体的字体规则?,ios,uiview,uifont,Ios,Uiview,Uifont,我试图直观地描述字体中使用的指南。这包括下降、上升、中间带、基线和高度 我使用majorLabel的字体属性获取所有数据。我已经检查过了,从中发现了一些与我的概念相似的东西(非常感谢) 在上面的代码中,五个UIView的全屏宽度和高度仅为1,以绘制一条清晰的小线条 我希望得到与下图类似的结果来显示该行 我已经得到了正确的结果,希望它尽可能准确。上面的代码是渲染线条的正确方法吗 // Labels @IBOutlet weak var majorLabel: UILabel! @IBOutlet

我试图直观地描述字体中使用的指南。这包括下降、上升、中间带、基线和高度

我使用
majorLabel
的字体属性获取所有数据。我已经检查过了,从中发现了一些与我的概念相似的东西(非常感谢)

在上面的代码中,五个UIView的全屏宽度和高度仅为1,以绘制一条清晰的小线条

我希望得到与下图类似的结果来显示该行

我已经得到了正确的结果,希望它尽可能准确。上面的代码是渲染线条的正确方法吗

// Labels
@IBOutlet weak var majorLabel: UILabel!
@IBOutlet weak var minorLabel: UILabel!


// Font guide lines
@IBOutlet weak var ascender: UIView!
@IBOutlet weak var capHeight: UIView!
@IBOutlet weak var xHeight: UIView!
@IBOutlet weak var baseLine: UIView!
@IBOutlet weak var descender: UIView!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.



    /* This part sets up the baseline of two different fonts */
    majorLabel.sizeToFit()
    minorLabel.sizeToFit()

    var changedFrame = minorLabel.frame
    changedFrame.origin.y = CGFloat(ceilf(
        Float(majorLabel.frame.origin.y) + Float(majorLabel.font.ascender - minorLabel.font.ascender)

        ))
    minorLabel.frame = changedFrame


    //minorLabel.center.x = majorLabel.center.x


    //print(majorLabel.center.x)
    //print(minorLabel.center.x)

    /* This section handles about capturing the font specific properties. */
    //baseLine.frame.origin.y = changedFrame.origin.y

    let baseLineLocation = majorLabel.frame.origin.y + majorLabel.font.ascender
    let medianLocation = majorLabel.frame.origin.y + majorLabel.font.xHeight
    let capHeightLocation = baseLineLocation  - majorLabel.font.capHeight
    let descenderLocation = baseLineLocation - majorLabel.font.descender
    let ascenderLocation = baseLineLocation - majorLabel.font.ascender

    print("Ascender: \(majorLabel.font.ascender)")
    print("Cap height: \(majorLabel.font.capHeight)")
    print("Median: \(majorLabel.font.xHeight)")

    print("Descender: \(majorLabel.font.descender)")

    baseLine.frame.origin.y = baseLineLocation
    xHeight.frame.origin.y = medianLocation
    capHeight.frame.origin.y = capHeightLocation
    descender.frame.origin.y = descenderLocation
    ascender.frame.origin.y = ascenderLocation



}