Как реализовать UIKit: SF Pro Rounded? - PullRequest
0 голосов
/ 18 апреля 2020

Помогите пожалуйста, я искал вокруг и не могу найти решение для реализации этого; Округлено , Округлый вариант шрифта по умолчанию.

Вот пример кода

//: A UIKit based Playground for presenting user interface

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {
    override func loadView() {
        let view = UIView()
        view.backgroundColor = .white

        let label = UILabel()
        label.frame = CGRect(x: 150, y: 200, width: 200, height: 32)
        label.text = "Hello World!"
        label.textColor = .black
        label.font = .systemFont(ofSize: 32, weight: .semibold)
        label.font.fontDescriptor.withDesign(.rounded) // I'm guessing this is wrong

        view.addSubview(label)
        self.view = view
    }
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()

Спасибо

1 Ответ

1 голос
/ 19 апреля 2020

Хорошо с кодом из исходного ответа ( Как использовать шрифт SF Rounded в SwiftUI? ), вы можете использовать его в своем коде так:

    override func loadView() {
    let view = UIView()
    view.backgroundColor = .white

    let label = UILabel()
    label.frame = CGRect(x: 150, y: 200, width: 200, height: 32)
    label.text = "Hello World!"
    label.textColor = .black

    // set rounded font
    let fontSize: CGFloat = 32
    let systemFont = UIFont.systemFont(ofSize: fontSize, weight: .semibold)
    let roundedFont: UIFont
    if let descriptor = systemFont.fontDescriptor.withDesign(.rounded) {
        roundedFont = UIFont(descriptor: descriptor, size: fontSize)
    } else {
        roundedFont = systemFont
    }

    label.font = roundedFont

    view.addSubview(label)
    self.view = view
}

Но когда вы Если вы хотите использовать его в нескольких местах, было бы лучше, если бы вы могли использовать его снова ... так, например, я создаю класс с именем FontKit ..., который имеет функцию stati c, которая дает мне округленный шрифт. Вот так:

class FontKit {

 static func roundedFont(ofSize fontSize: CGFloat, weight: UIFont.Weight) -> UIFont {
    let systemFont = UIFont.systemFont(ofSize: fontSize, weight: weight)
    let font: UIFont

    if #available(iOS 13.0, *) {
        if let descriptor = systemFont.fontDescriptor.withDesign(.rounded) {
            font = UIFont(descriptor: descriptor, size: fontSize)
        } else {
            font = systemFont
        }
    } else {
        font = systemFont
    }

    return font
}
}

А потом в своем коде я использую это так:

label.font = FontKit.roundedFont(ofSize: 32, weight: .semibold)
...