Как работать с модификаторами шрифтов? верхний регистр и размер шрифта в SwiftUI - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь создать шрифты по умолчанию для моего приложения, используя модификаторы. Если есть более простой способ, я хотел бы знать. В настоящее время у меня есть

struct PrimaryLabel: ViewModifier {
    func body(content: Content) -> some View {
        content
            .font(Font.body.smallCaps())
            .font(.system(size: 20, weight: .light, design: .serif)) // this is not working. Only the first one will '.font' will work

    }
}

удобство использования:

Text("Hello World").modifier(PrimaryLabel())

Есть ли способ изменить тип шрифта (ie, как при использовании шрифта AmericanTypewriter-Light), сделать его заглавными, и использовать стиль, как weight: .light, design: .serif, жирный и c? Я не хочу определять каждый текст. Второй модификатор .font в структуре не работает.

Ответы [ 2 ]

1 голос
/ 19 марта 2020

первый модификатор виден только, что логично, попробуйте применить несколько, background или .foregroundColor .... он работает так же.

try

VStack {
    Text("ALFA").font(.largeTitle)
    Text("Beta").foregroundColor(Color.red)
}
.font(.system(size: 150))
.foregroundColor(Color.blue)

enter image description here

Вы можете создать шрифт с разными инициализаторами

init(CTFont)

Получает шрифт из экземпляра шрифта платформы.

static func system(Font.TextStyle, design: Font.Design) -> Font

Получает систему шрифт с заданным стилем и дизайном.

static func system(size: CGFloat, weight: Font.Weight, design: Font.Design) -> Font

Указывает используемый системный шрифт, а также стиль, вес и любые параметры дизайна, которые вы хотите применить к тексту.

static func custom(String, size: CGFloat) -> Font

Получает пользовательский шрифт с заданным именем и размером.

И вы можете дополнительно стилизовать свой текст

Стилизация представления текста

func bold() -> Text

Применяет жирный шрифт для веса текст.

func italic() -> Text

Применяет курсив к тексту.

func fontWeight(Font.Weight?) -> Text

Устанавливает вес шрифта текста.

func baselineOffset(CGFloat) -> Text

Устанавливает базовое смещение для text.

func tracking(CGFloat) -> Text

Устанавливает отслеживание текста.

func kerning(CGFloat) -> Text

Устанавливает интервал или кернинг между двумя чарами. cters.

func underline(Bool, color: Color?) -> Text

Применяет подчеркивание к тексту.

func strikethrough(Bool, color: Color?) -> Text

Применяет зачеркивание к тексту.

ПРЕДУПРЕЖДЕНИЕ !! Не каждая комбинация поддерживается! см. Как применить .itali c () к .largeTitle Font?

0 голосов
/ 19 марта 2020
extension View {
    func primaryLabelStyle(_ weight: Font.Weight) -> some View {
        return self.modifier(PrimaryLabel(weight: weight))
    }
}

struct PrimaryLabel: ViewModifier {
    let weight: Font.Weight
    func body(content: Content) -> some View {
        content
            .font(Font.body.smallCaps())
            .font(.system(size: 20, weight: weight, design: .serif)) // this is not working. Only the first one will '.font' will work

    }
}

Text("Hello World").primaryLabelStyle(.light)
...