Размеры динамического шрифта iOS — можно ли изменить размеры по умолчанию / иметь размеры pt между стилями?

См. здесь размеры динамического шрифта Apple.

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

Например.:

Название 1 — 28 баллов

Название 2 — 22 балла

Я хочу иметь возможность использовать шрифт 24pt с динамическим размером. С настройкой Large (по умолчанию) это невозможно... но если у пользователя есть настройка xLarge, Title 2 фактически масштабируется до 24pt...

Поскольку я ориентируюсь на iOS 15, я использую эти модификаторы на моем Text, поэтому я могу использовать закругленный шрифт с динамическим размером:

.font(.system(.title2, design: .rounded))
.fontWeight(.regular)

Я искал и искал, но ни один из предложенных ответов не работает для меня. Мне нравится идея масштабировать существующие размеры динамического шрифта с помощью множителя, но если я использую .scaleEffect(value), это создает пикселизацию при увеличении и портит отступы даже при уменьшении.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
0
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Font.custom(_:size:relativeTo:)

например

struct ContentView: View {
    
    var body: some View {
        VStack(alignment: .leading) {
            Text("Title").font(.title).border(.green)
            Text("Title").font(.title1½).border(.blue)
            Text("Title").font(.title2).border(.red)
                
        }
    }
}

extension Font {
    static let title1½ = Font.custom("", size: 24, relativeTo: .title2)
}

(если оставить name пустым, кажется, что возвращается системный шрифт)

Вы можете адаптировать это для использования закругленных шрифтов в iOS 15. Сначала вам нужно найти имя самого шрифта, используя UIKit:

let font = UIFont.systemFont(ofSize: 24, weight: .regular)
let fontDescriptor = font.fontDescriptor.withDesign(.rounded)!
let roundedFont = UIFont(descriptor: fontDescriptor, size: 24)
print(roundedFont.fontName)

// .AppleSystemUIFontRounded-Regular

Вы можете использовать это в своем собственном методе Font:

extension Font {
    static let title1Rounded = Font.custom(".AppleSystemUIFontRounded-Regular", size: 28, relativeTo: .title)
    static let title1½Rounded = Font.custom(".AppleSystemUIFontRounded-Regular", size: 24, relativeTo: .title2)
    static let title2Rounded = Font.custom(".AppleSystemUIFontRounded-Regular", size: 22, relativeTo: .title2)
}

Спасибо, это кажется отличным и работает хорошо. Только одно — как я могу установить дизайн шрифта на rounded? Поскольку я ориентируюсь на iOS 15, я не могу использовать .fontDesign(.rounded) и не могу найти способ добавить его в качестве параметра с помощью .custom(...

Joseph 10.02.2023 05:13

Фантастика, спасибо! Напишите ответ и здесь: stackoverflow.com/questions/72299093/…

Joseph 10.02.2023 15:04

Другие вопросы по теме