Шрифты на устройстве iOS

#objective-c #ios #cocoa-touch #fonts

#objective-c #iOS #cocoa-touch #шрифты

Вопрос:

Я прочитал доступные семейства шрифтов по [UIFont familyNames] , но у меня есть разные списки на разных устройствах (но с одной и той же версией iOS). Кто-нибудь может мне сказать, включают ли шрифты, перечисленные с помощью приведенного выше метода, пользовательские шрифты, предоставляемые другими установленными приложениями, или это только шрифты, поставляемые с iOS?

Ответ №1:

Да, в нем отображаются все шрифты в вашем приложении, включая добавленные вами пользовательские шрифты. Вот более короткий код для перечисления всех шрифтов:

Objective-C

 for (NSString *familyName in [UIFont familyNames]){
    NSLog(@"Family name: %@", familyName);
    for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
        NSLog(@"--Font name: %@", fontName);
    }
}
  

Swift 2

 for familyName:AnyObject in UIFont.familyNames() {
    print("Family Name: (familyName)")
    for fontName:AnyObject in UIFont.fontNamesForFamilyName(familyName as! String) {
        print("--Font Name: (fontName)")
    }
}
  

Swift 3

  for familyName:String in UIFont.familyNames {
     print("Family Name: (familyName)")
     for fontName:String in UIFont.fontNames(forFamilyName: familyName) {
         print("--Font Name: (fontName)")
     }
 }
  

Ответ №2:

Вот правильный фрагмент для перечисления всех шрифтов:

     // List all fonts on iPhone
NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];
NSArray *fontNames;
NSInteger indFamily, indFont;
for (indFamily=0; indFamily<[familyNames count];   indFamily)
{
    NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);
    fontNames = [[NSArray alloc] initWithArray:
                 [UIFont fontNamesForFamilyName:
                  [familyNames objectAtIndex:indFamily]]];
    for (indFont=0; indFont<[fontNames count];   indFont)
    {
        NSLog(@"    Font name: %@", [fontNames objectAtIndex:indFont]);
    }
}
  

Ответ №3:

Вы найдете список всех встроенных шрифтов в iOS, для сборки которых не требуется никакого дополнительного класса, здесь : Список доступных шрифтов iOS

Комментарии:

1. Теперь эта ссылка разорвана

Ответ №4:

Грубер опубликовал ссылку на шрифты, включенные некоторое время назад: Шрифты iOS

Редактировать: сайт, на который он ссылается, является iosfonts.com

Ответ №5:

Я полагаю, что это только шрифты, поставляемые с iOS. Любые пользовательские шрифты, которые вам нужны, чтобы найти соответствующие файлы .otf или .ttf и включить этот файл в ресурс вашего проекта.

Я говорю это, потому что я хотел использовать HelveticaNeue-UltraLight шрифт. Они перечислены в iOS, и вы видите этот параметр шрифта в Xcode. Но при выборе ничего не происходит. Чтобы это сработало, мне пришлось выполнить описанное выше и поместить в HelveticaNeue-UltraLight файл шрифта.

Ответ №6:

Пожалуйста, попробуйте этот код:https://github.com/zynga/FontLabel/

для проверки доступных шрифтов iOS:

 for (indFamily=0; indFamily<[familyNames count];   indFamily){
  NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);
  fontNames = [[NSArray alloc] initWithArray:[UIFont fontNamesForFamilyName:[familyNames objectAtIndex:indFamily]]];
  for (indFont=0; indFont<[fontNames count];   indFont){
    NSLog(@"    Font name: %@", [fontNames objectAtIndex:indFont]);
  }
}
[fontNames release];