динамический размер шрифта, стиль в соответствии с разрешением экрана

#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. Обновлен ответ, чтобы добавить больше гибкости