Вы можете конвертировать ваш CGFont в CTFont, но, к сожалению, ни один из них не даст вам UIFont. Вот способы получить UIFont: запросить системный шрифт или запросить шрифт по имени PostScript. Поэтому для пользовательских шрифтов в UILabel я предлагаю вам использовать последний.
Если вы знаете, что файл шрифта будет использоваться вашим приложением заранее, вы можете добавить его в свой пакет и загрузить его с UIFont , + fontWithName: size: , так как UIFont ищет ваш пакет для файла шрифта с этим именем PostScript.
Например, файл шрифта TrueType "VeraMono.ttf" имеет имя PostScript " Bitstream Vera Sans Mono ", поэтому он загружается в UILabel, например:
label.font = [UIFont fontWithName:@"Bitstream Vera Sans Mono" size:12];
Чтобы получить имена PostScript нединамически, используйте инструмент шрифта, или, в случае выше, имя PostScript оказывается таким же, как отображение «Полного имени» в Finder> Get Info.
Однако в тех случаях, когда вам не обязательно знать заранее имя шрифта PostScript (например, поддержка пользовательских шрифтов), возможно, вы можете загрузить имя файла в NSData и «grep» для его имени PostScript ...
Удачи,