2015-10-27 4 views
0

Я стараюсь, чтобы размеры моего шрифта масштабировались с изменением ширины системы (через настройки iOS), но я могу получить эту функцию только в том случае, если я установил Text Style в Body и т. Д. В Interface Builder.iOS 9 Адаптируемые размеры шрифта?

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

let bodyFont = UIFont.preferredFontForTextStyle(UIFontTextStyleBody) 
    label.font = UIFont(descriptor: bodyFont.fontDescriptor(), size: bodyFont.pointSize * 1.2) 

Но есть лучший способ, потому что это чувствует себя не так.

И есть ли способ получить уведомление при изменении размера шрифта системы?

ответ

1

вы должны слушать это уведомление: UIContentSizeCategoryDidChangeNotification

Если вы хотите, чтобы в дальнейшем увеличить эти размеры, то вы можете сделать то, что вы предложили. Просто будьте осторожны, если пользователь выбирает действительно большие размеры шрифта в настройках доступности, так как ваши шрифты будут еще больше.

+0

Так что мне нужно слушать это на каждом из моих лейблов? Будет ли это истощать много тесто или будет хорошо? – Bjarte

+0

Я бы предложил прослушать это в вашем активном ViewController, а затем вызвать метод, который обновляет все размеры ваших меток. Это будет нормально для аккумулятора, он будет вызываться только в том случае, если пользователь изменит свой размер шрифта. Это хороший пример: http://useyourloaf.com/blog/supporting-dynamic-type.html – totiG

+0

Это звучит как очень плохая идея для этого приложения, над которым я работаю - у меня много разных текстов. У меня очень длинный стол с множеством разных взглядов, которые могут появляться и исчезать и нуждаться в адаптации. Он будет тесно связывать компоненты с viewcontroller. Это звучит очень грязно для поддержания. – Bjarte