SwiftUI: динамически изменять размер шрифта в зависимости от длины строки - PullRequest
0 голосов
/ 21 апреля 2020

Есть ли в SwiftUI что-нибудь, что позволяет мне измерять длину строки - скажем, например, внутри текстового поля - и уменьшать размер шрифта, если строка длиннее ширины текстового поля?

ОК Я вижу, мой вопрос неоднозначен ... Есть два вопроса, объединенные в один: D Позвольте мне разделить их и перейти к вопросу, который действительно меня интересует.

Динамическое изменение шрифта TextFields не должно быть большим сделка. Я еще не тестировал его, но я полагаю, что удержание @State variable и передача его .systemfont() внутри модификатора .font() должны помочь.

Теперь меня действительно интересует следующее: как узнать, длиннее ли текст в моих текстовых полях, чем его контейнер?

Поиск по inte rnet привел меня к UIKit intrinsicContentSize. Но я не нашел никакого полезного эквивалента для SwiftUI, и при этом я не узнал, могу ли я все равно использовать его в SwiftUI.

Кто-нибудь когда-либо делал что-нибудь подобное в SwiftUI? Кто-нибудь может указать мне правильное направление?

Спасибо

1 Ответ

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

Существует простой ответ, однако я обнаружил, что он работает только иногда.

Text("Hello World!")
.minimumScaleFactor(0.4)

Это должно делать то, что вы хотите, только уменьшать текст, если он не помещается. Он будет только уменьшать текст до размера, необходимого для размещения в рамке текста.

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...