2016-01-02 4 views
0

J'ai une police personnalisée incluse dans mon projet ciblé Xcode 7, iOS 9. Je veux faire la police monospaced. J'ai essayé ceci, et n'ai pas fonctionné:iOS Monospaced Police personnalisée

let originalFont = UIFont(name: "My Custom Font", size: 18) 
let originalFontDescriptor = originalFont!.fontDescriptor() 

let fontDescriptorFeatureSettings = [ 
    [ 
     UIFontFeatureTypeIdentifierKey: kNumberSpacingType, 
     UIFontFeatureSelectorIdentifierKey: kMonospacedNumbersSelector 
    ] 
] 

let fontDescriptorAttributes = [UIFontDescriptorFeatureSettingsAttribute: fontDescriptorFeatureSettings] 
let fontDescriptor = originalFontDescriptor.fontDescriptorByAddingAttributes(fontDescriptorAttributes) 
let font = UIFont(descriptor: fontDescriptor, size: 0) 

topLabel.font = font 

Avec ou sans le code ci-dessus, l'étiquette affichée dans la police personnalisée appropriée. C'est juste au dessus du code ne fait rien.

+1

le code semble fonctionner. Est-il possible que l'emplacement du paramètre de police soit incorrect? Où faites-vous cela? – nycynik

+0

Voilà où j'allais. Comment obtenir l'emplacement du paramètre de police? – Gizmodo

+0

Je ne pense pas qu'une police non-monospaced peut simplement être employée comme police monospaced. La police est soit monospace, soit elle ne l'est pas. – rmaddy

Répondre

0

Le code que vous utilisez ne fait pas de police à espacement fixe.

Il s'agit d'ajuster la police pour afficher les chiffres en mode monospace. Donc, tous avec ces chiffres de police auront la même largeur.

est Ci-dessous un exemple avec 4 étiquettes, 1 est à l'aide de police personnalisée Docis lumière, 2ème est Docis léger avec des chiffres monospaced sur, 3 est la police du système de même taille, 4 est la police du système avec des chiffres monospaced sur:

Comme vous pouvez le constater, cette police personnalisée prend déjà en charge les caractères monospace dès la sortie de la boîte sans modification. Si vous devez utiliser une police monospace (pas seulement des chiffres), vous devez utiliser une police monospace personnalisée (conçue pour être monospace) ou vous pouvez utiliser des polices monospaced iOS intégrées telles que Courier ou Menlo (Voir tous les iOS disponibles polices à http://iosfonts.com/)

Voici comment ils ressemblent avec la même scénario:

courier and menlo monospaced iOS fonts

avec ou sans peaufinage, ils sont déjà les chiffres et espacement fixe sont séparés d'un espace aussi bien.

J'ai répondu à une question similaire ici, probablement, je devrais simplement lier le answer au lieu d'images mais beaucoup plus visuel.