Comments 9
60 FPS на iPhone 15 Pro
там же адаптивное оно, может быть 10 а может быть 120
Это тот самый случай, когда "можем" не значит "нужно".
стоит вынести в заголовок. можно даже только одно то и оставить :)
Согласен, важнее ощущение плавности. И да, меньше анимаций обычно лучше
// Плохо: размер вычисляется динамически
Text(product.title)
.font(.largeTitle)
// Хорошо: фиксируем высоту
Text(product.title)
.font(.largeTitle)
.frame(height: 40, alignment: .leading)завязывайте уже там со своими нейросетями. По вашей логике заголовок нужно ограничить фиксированным фреймом, хотя это обычно основной текст на экране, и сокращать его крайне нежелательно. А если и сокращать по высоте, то тут больше подходит lineLimit, а никак не frame
Если не использовать динамический шрифт, то работает безотказно и всегда. Linelimit затримит текст - это не всегда подходит. Если у вас текста на две строки и фрейм не задать то при изменении и пересчете фреймов других элементов на экране, получаем некрасивые скачки элемента с текстом на экране. А если у вас такой текст в ячейке списка, то получаем неимоверную красоту. Linelimit не во всех случаях поможет. И еще раз уточню, что мое предложение установить жесткий фрейм - это ситуация, где мы получаем скачки элементов из-за наличия анимаций - довольно не частая ситуация. Если не использовать динамический шрифт, то работает безотказно и всегда. Linelimit затримит текст - это не всегда подходит. Если у вас текста на две строки и фрейм не задать то при изменении и пересчете фреймов других элементов на экране, получаем некрасивые скачки элемента с текстом на экране. А если у вас такой текст в ячейке списка, то получаем неимоверную красоту. Я для себя пока нашел такое решение. Предлагайте свое, я ж не претендую на единственно верное решение. И нейросети использую только для генерации картинок. Зря вы так. Даже грамматику им не даю проверять.
что в вашем понятии "динамический шрифт"? У меня в проектах по 20-30 языков, и одна и та же надпись может быть как короткой, так и длинной. У вас в проектах только английский и шрифт system regular?
Да даже .font(.largeTitle) - шрифт без явного указания размера вы предлагаете ограничить высотой 40px. Откуда это магическое число и откуда такая уверенность, что туда все влезет?
Linelimit затримит текст - это не всегда подходит.
по поводу этого я не понял. Вы предлагаете ограничить не количество строк, а фрейм. У вас же тоже будет сокращаться текст.
А решение я уже предложил выше.
.font(.largeTitle) - это динамический шрифт. Его размер пользователь может увеличивать в настройках телефона ползунком. И, да, согласен, для динамического шрифта, хардить фрейм - плохое решение. При увеличении юзером, например до 150% от просто не влезет во фрейм. Но если шрифт задан строго 20 поинтов и его захардкоженный фрейм его вмещает, то проблем не будет.
И все мною приведенное не относится к локализованным приложениям. Этот контекст в статье не рассматривается. Но и lineLimit при локализации использовать ИМХО тоже не подходит. В одном переводе тайтл в три слова, а в другом языке - это уже может быть не одна, а две строки. Тут получим обрезание текста и троеточие.
Ну и если поделитесь инструментом, который позволяет автоматизировать локализацию на 20-30 языков, буду очень благодарен. Или все «руками» переводите?
Искусство бесшовных переходов в iOS от 60 FPS до идеального UX