#ios #swift #uifont
#iOS #swift #uifont
Вопрос:
Я пытаюсь динамически указывать размер шрифта, стиль в соответствии с типографикой и весом в соответствии с разрешением экрана.
Я пытался:
title_home.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.title1)
subtitle_home.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.title2)
subtitle1_home.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.title2)
subtitle2_home.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.title2)
Но я получаю текст в обычном обычном размере. Мне нужно, чтобы заголовок был выделен жирным шрифтом с некоторым размером, и он должен меняться в соответствии с разрешением экрана.
Комментарии:
1. Привет .. этот фрагмент кода, которым вы поделились, в порядке. Можете ли вы поделиться какой-либо другой информацией, например, где вы вызываете код .. или если вы можете поделиться всем кодом контроллера .. я думаю, что свойство font переопределяется из какой-то другой части вашего кода
2. Я вызываю этот код в методе viedidload viewcontroller
3. Вы хотите сказать, что хотите шрифт меньшего размера на iPhone 5 и намного больший шрифт на iPad Pro?
4. И вы уверены, что шрифты labels не переопределяются?? я вижу, что это работает на моем конце. Поля «title_home», «subtitle_home», «subtitle1_home», «subtitle2_home», как вы устанавливаете текст для своих полей?
Ответ №1:
Вы можете выбрать предпочтительный шрифт bold / italic / etc на основе дескриптора, что-то вроде этого:
let descriptor = UIFontDescriptor.preferredFontDescriptor(withTextStyle: .headline)
.addingAttributes([.traits : [UIFontDescriptor.TraitKey.weight: UIFont.Weight.semibold]])
let semiboldFont = UIFont(descriptor: descriptor, size: 0)
print(semiboldFont)
//<UICTFont: 0x7fe03300cc30> font-family: ".SFUIText-Semibold"; font-weight: bold; font-style: normal; font-size: 17.00pt
надеюсь, это поможет
Комментарии:
1. возможно ли это для semibold ?? если я сохраню размер шрифта таким же, будет ли он изменять размер в соответствии с разрешением??
2. Обновлен ответ, чтобы добавить больше гибкости