Voilà comment je le fais, cela est beaucoup de code, mais c'est correct, le travail a déjà été fait:
La principale méthode, par exemple, si vous voulez voir tous les descripteurs symboliques, il est cette :
NSArray *fontFamilies = [UIFont familyNames];
for (int i = 0; i < [fontFamilies count]; i++) {
NSString *fontFamily = [fontFamilies objectAtIndex:i];
NSArray *fontNames = [UIFont fontNamesForFamilyName:[fontFamilies objectAtIndex:i]];
NSLog (@"%@: %@", fontFamily, fontNames);
[self findFontDescriptors:fontFamily size:14];
}
Méthodes, cela fonctionne avec la méthode ci-dessus, et retourne ce que vous cherchez. Vous pouvez l'utiliser en utilisant simplement les méthodes ci-dessous, puis de brancher le nom de la police et sa taille, mais la boucle ci-dessus montre tout pour toutes les polices système:
-(void)findFontDescriptors:(NSString*)fontName size:(float)size {
if ([self isUIFontDescriptorTraitItalic:fontName size:size]) {
NSLog(@"UIFontDescriptorTraitItalic");
}
if ([self isUIFontDescriptorTraitBold:fontName size:size]) {
NSLog(@"UIFontDescriptorTraitBold");
}
if ([self isUIFontDescriptorTraitExpanded:fontName size:size]) {
NSLog(@"UIFontDescriptorTraitExpanded");
}
if ([self isUIFontDescriptorTraitCondensed:fontName size:size]) {
NSLog(@"UIFontDescriptorTraitCondensed");
}
if ([self isUIFontDescriptorTraitMonoSpace:fontName size:size]) {
NSLog(@"UIFontDescriptorTraitMonoSpace");
}
if ([self isUIFontDescriptorTraitVertical:fontName size:size]) {
NSLog(@"UIFontDescriptorTraitVertical");
}
if ([self isUIFontDescriptorTraitUIOptimized:fontName size:size]) {
NSLog(@"UIFontDescriptorTraitUIOptimized");
}
if ([self isUIFontDescriptorTraitTightLeading:fontName size:size]) {
NSLog(@"UIFontDescriptorTraitTightLeading");
}
if ([self isUIFontDescriptorTraitLooseLeading:fontName size:size]) {
NSLog(@"UIFontDescriptorTraitLooseLeading");
}
if ([self isUIFontDescriptorClassMask:fontName size:size]) {
NSLog(@"UIFontDescriptorClassMask");
}
if ([self isUIFontDescriptorClassUnknown:fontName size:size]) {
NSLog(@"UIFontDescriptorClassUnknown");
}
if ([self isUIFontDescriptorClassOldStyleSerifs:fontName size:size]) {
NSLog(@"UIFontDescriptorClassOldStyleSerifs");
}
if ([self isUIFontDescriptorClassTransitionalSerifs:fontName size:size]) {
NSLog(@"UIFontDescriptorClassTransitionalSerifs");
}
if ([self isUIFontDescriptorClassModernSerifs:fontName size:size]) {
NSLog(@"UIFontDescriptorClassModernSerifs");
}
if ([self isUIFontDescriptorClassClarendonSerifs:fontName size:size]) {
NSLog(@"UIFontDescriptorClassClarendonSerifs");
}
if ([self isUIFontDescriptorClassSlabSerifs:fontName size:size]) {
NSLog(@"UIFontDescriptorClassSlabSerifs");
}
if ([self isUIFontDescriptorClassFreeformSerifs:fontName size:size]) {
NSLog(@"UIFontDescriptorClassFreeformSerifs");
}
if ([self isUIFontDescriptorClassSansSerif:fontName size:size]) {
NSLog(@"UIFontDescriptorClassSansSerif");
}
if ([self isUIFontDescriptorClassOrnamentals:fontName size:size]) {
NSLog(@"UIFontDescriptorClassOrnamentals");
}
if ([self isUIFontDescriptorClassScripts:fontName size:size]) {
NSLog(@"UIFontDescriptorClassScripts");
}
if ([self isUIFontDescriptorClassSymbolic:fontName size:size]) {
NSLog(@"UIFontDescriptorClassSymbolic");
}
}
- (BOOL)isUIFontDescriptorTraitBold:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorTraitBold) != 0;
}
- (BOOL)isUIFontDescriptorTraitItalic:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorTraitItalic) != 0;
}
- (BOOL)isUIFontDescriptorTraitExpanded:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorTraitExpanded) != 0;
}
- (BOOL)isUIFontDescriptorTraitCondensed:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorTraitBold) != 0;
}
- (BOOL)isUIFontDescriptorTraitMonoSpace:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorTraitMonoSpace) != 0;
}
- (BOOL)isUIFontDescriptorTraitVertical:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorTraitVertical) != 0;
}
- (BOOL)isUIFontDescriptorTraitUIOptimized:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorTraitUIOptimized) != 0;
}
- (BOOL)isUIFontDescriptorTraitTightLeading:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorTraitBold) != 0;
}
- (BOOL)isUIFontDescriptorTraitLooseLeading:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorTraitLooseLeading) != 0;
}
- (BOOL)isUIFontDescriptorClassMask:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorClassMask) != 0;
}
- (BOOL)isUIFontDescriptorClassUnknown:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorClassUnknown) != 0;
}
- (BOOL)isUIFontDescriptorClassOldStyleSerifs:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorClassOldStyleSerifs) != 0;
}
- (BOOL)isUIFontDescriptorClassTransitionalSerifs:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorClassTransitionalSerifs) != 0;
}
- (BOOL)isUIFontDescriptorClassModernSerifs:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorClassModernSerifs) != 0;
}
- (BOOL)isUIFontDescriptorClassClarendonSerifs:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorClassClarendonSerifs) != 0;
}
- (BOOL)isUIFontDescriptorClassSlabSerifs:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorClassSlabSerifs) != 0;
}
- (BOOL)isUIFontDescriptorClassFreeformSerifs:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorClassFreeformSerifs) != 0;
}
- (BOOL)isUIFontDescriptorClassSansSerif:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorClassSansSerif) != 0;
}
- (BOOL)isUIFontDescriptorClassOrnamentals:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorClassOrnamentals) != 0;
}
- (BOOL)isUIFontDescriptorClassScripts:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorClassScripts) != 0;
}
- (BOOL)isUIFontDescriptorClassSymbolic:(NSString*)fontName size:(float)size {
UIFont* fonts = [UIFont fontWithName:fontName size:size];
UIFontDescriptorSymbolicTraits symTraits = fonts.fontDescriptor.symbolicTraits;
return (symTraits & UIFontDescriptorClassSymbolic) != 0;
}
Maintenant, si vous êtes super hardcore et voulez pour aller plus loin, vous pouvez utiliser ceci:
UIFont *font = [UIFont fontWithName: @"HelveticaNeue-Medium" size: 12.0];
CFArrayRef fontFeatures = CTFontCopyFeatures((__bridge CTFontRef) font);
NSLog(@"properties = %@", fontFeatures);
cette méthode ci-dessus renvoie des caractéristiques très nettes de polices qui sont différentes de celles ci-dessus, en quelque sorte. Il y a un excellent guide que Apple a sur ceci:
https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009542
Et juste pour vous amuser avec cela, permet d'imprimer tous les descripteurs de police:
https://gist.github.com/anonymous/f6ddb0f525b513b10941
est le format ici:
2015-08-27 05: 32: 28,681 [25332: 2371074] Marion: ( "Marion-Italic", " Marion-Bold », "Marion-Regular")
2015-08-27 05: 32: 28,681 [25332: 2371074] UIFontDescriptorClassMask
2015-08-27 05: 32: 28,681 [25332: 2371074 ] UIFontDescriptorClassSansSerif
2015-08-27 05: 32: 28,681 [25332: 2371074] UIFontDescriptorClassOrnamentals
27/08/2015 05: 32: 28,681 [25332: 2371074] UIFontDescriptorClassScripts
2015-08 -27 05 : 32: 28.682 [25332: 2371074] UIFontDescriptorClassSymbolic
Je pensais que peut-être vous avez dû faire quelque chose comme ça, j'ai cherché une solution à 5 standard liner et il n'y a littéralement rien là que Apple a mis en place, mais cela ne En fait, les gens ne réalisent pas à quel point il est difficile de savoir ce que font vos polices, c'est génial! –