Ограничить динамический тип масштабированием до размеров контейнера.IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Ограничить динамический тип масштабированием до размеров контейнера.

Сообщение Anonymous »

У меня есть библиотека компонентов SwiftUI, которая разрабатывается для интеграции в другие проекты и многие другие продукты компании. Библиотека компонентов пользовательского интерфейса служит системой дизайна.
Я пытаюсь добиться динамического типа для текстовых меток в SwiftUI. Я использую собственный шрифт и хочу иметь возможность ограничить динамический тип размерами контейнера (шириной и высотой).
Я уже использовал модификатор шрифта следующим образом:
Я уже использовал модификатор шрифта следующим образом:
p>

Код: Выделить всё

.font(dynamicScaling ? .custom(style.name, size: style.size, relativeTo: style.dynamicTypeMapping) : .custom(style.name, fixedSize: style.size))
Я создал следующее для стилизации текста:

Код: Выделить всё

protocol TextModifier {
associatedtype Body: View
func body(text: Text) -> Body
}

struct Style: TextModifier {
var typography: StyleType
var dynamicScaling: Bool = true
var style: FontStyle {
return FontStyleManager.style(style: typography)
}

func body(text content: Text) -> some View {
return content
.font(dynamicScaling ? .custom(style.name, size: style.size, relativeTo: style.dynamicTypeMapping) : .custom(style.name, fixedSize: style.size)) // fixedSize is to disable the dynamic scaling completely
.underline(style.underlineDecoration)
.lineSpacing(((style.lineHeight / style.fontHeight) * style.fontHeight) - style.fontHeight)
}

}

extension Text {
func modifier(_ theModifier: TM) -> some View {
return theModifier.body(text: self)
}

public func style(style: StyleType, dynamicScaling: Bool = true) -> some View {
modifier(Style(typography: style, dynamicScaling: dynamicScaling))
}

Один из моих вариантов использования удовлетворен, когда я использую .custom(style.name, fixSize: style.size). Это полностью отключает динамическое масштабирование, когда это необходимо.
Когда динамическое масштабирование включено и я увеличиваю параметр «Доступность -> Большой текст», текст выходит за пределы контейнера и увеличивает размер контейнера. высота/ширина.
Текст среднего размера выглядит следующим образом:
[img]https://i.sstatic.net /IEeZQtWk.png[/img]

Когда я увеличиваю настройку «Крупный текст», шрифт увеличивается:
Изображение

Как можно Я достиг этого?

Подробнее здесь: https://stackoverflow.com/questions/785 ... -dimension
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как я могу добавить больше размеров в список размеров на дисплее $? (Начальная загрузка)
    Anonymous » » в форуме Html
    0 Ответы
    97 Просмотры
    Последнее сообщение Anonymous
  • ДИНАМИЧЕСКИЙ SHT->ДИНАМИЧЕСКИЙ SHT?
    Anonymous » » в форуме Android
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • ДИНАМИЧЕСКИЙ SHT->ДИНАМИЧЕСКИЙ SHT?
    Anonymous » » в форуме Linux
    0 Ответы
    45 Просмотры
    Последнее сообщение Anonymous
  • Ошибка: исключение в HostFunction: TypeError: ожидался динамический тип «логический», но имел тип «объект»
    Anonymous » » в форуме Android
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Ошибка: исключение в HostFunction: TypeError: ожидался динамический тип «логический», но имел тип «объект»
    Anonymous » » в форуме Android
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»