Nous utilisons des polices personnalisées dans notre projet. Cela fonctionne bien dans Xcode 5. Dans Xcode 6, cela fonctionne en texte brut, chaîne attribuée dans le code. Mais ces chaînes attribuées définies dans le storyboard reviennent toutes à Helvetica lorsqu'elles sont exécutées sur un simulateur ou un appareil, bien qu'elles aient l'air bien dans le storyboard.
Je ne sais pas s'il s'agit d'un bogue du SDK Xcode 6 ou iOS 8, ou si la façon d'utiliser les polices personnalisées est modifiée dans Xcode 6 / iOS 8?
Réponses:
Le correctif pour moi était d'utiliser une
IBDesignable
classe:En vous donnant ceci dans Interface Builder:
Vous pouvez configurer votre chaîne attribuée comme vous le faites normalement, mais vous devrez à nouveau définir votre taille de police et votre famille de polices dans les nouvelles propriétés disponibles.
Comme l'Interface Builder fonctionne avec la police personnalisée par défaut, il en résulte que ce que vous voyez est ce que vous obtenez , ce que je préfère lors de la création d'applications.
Remarque
La raison pour laquelle j'utilise ceci au lieu de la version simple est que je définis des propriétés sur l'étiquette attribuée comme l'espacement des lignes, qui ne sont pas disponibles lors de l'utilisation du style simple.
la source
@IBInspectable
temporairement des attributs au lieu de la police et de la taille. Nous avons unemarkdownText
propriété, car la plupart du temps, nous utilisons une chaîne attribuée pour le texte en gras ou souligné. Ensuite, analysez le texte de démarque en chaîne attribuée avec les informations de police et de taille définies pour le texte brut.La réponse la plus simple qui a fonctionné est de faire glisser les polices dans FontBook. Si les polices sont dans votre projet mais pas dans FontBook de votre ordinateur, IB a parfois du mal à les trouver. Bizarre, mais a travaillé pour moi à plusieurs reprises.
la source
Vous pouvez ajouter des polices personnalisées au livre de polices.
Étape 1 : Cliquez sur gérer les polices. Il ouvre le livre de polices.
Étape 2 : Cliquez sur plus et ajoutez vos polices.
La prochaine fois que vous cliquerez sur la police avec le texte attribué, la police nouvellement ajoutée apparaîtra également dans la liste. Mais assurez-vous que votre police personnalisée a été ajoutée dans info.plist et regroupez les ressources.
la source
Grâce à ce fil, je suis arrivé à cette solution:
la source
Ma solution est un peu une solution. La vraie solution est pour Apple de réparer Interface Builder.
Avec lui, vous pouvez marquer tout le texte en gras et en italique dans le générateur d'interface à l'aide d'une police système, puis au moment de l'exécution, rendre votre police personnalisée. Peut ne pas être optimal dans tous les cas.
Inspiré par ce post
la source
J'ai eu du mal avec ce bogue: UILabel s'affiche correctement dans IB avec une police personnalisée mais ne s'affiche pas correctement sur l'appareil ou le simulateur (la police est incluse dans le projet et est utilisée dans les UILabels simples).
Enfin trouvé Attributed String Creator sur (Mac) App Store. Génère du code à placer dans votre application à l'endroit approprié. Fantastique. Je ne suis pas le créateur, juste un utilisateur heureux.
la source
J'ai rencontré le même problème: la police d'attribut définie pour TextView dans le storyboard ne fonctionnait pas au moment de l'exécution avec XCode 6.1 et iOS 8 SDK.
Voici comment j'ai résolu ce problème, pourrait être une solution de contournement pour vous:
ouvrez l'inspecteur d'attributs de votre vue de texte, changez le texte en "Plain"
cliquez sur la croix pour supprimer le "wC hR" (rouge ci-dessous)
changez le texte en "Attribué", puis vous pouvez définir la police et la taille de votre texte.
la source
wC hR
propriété n'est définie, niUILabel
niUITextView
.A rencontré le même problème: la police d'attribut pour UILabel dans le storyboard ne fonctionnait pas au moment de l'exécution. L'utilisation de cette UIFont + IBCustomFonts.m fonctionne pour moi https://github.com/deni2s/IBCustomFonts
la source
Essayez ceci, cela fonctionnera
Dans mon cas, lorsque j'essaie de définir "Silversky Technology" comme texte attribué pour l'étiquette du constructeur d'interface, il ne s'affiche pas lorsque je lance dans le simulateur, mais il s'affiche dans le constructeur d'interface. J'ai donc utilisé une astuce: j'ai créé une police Silversky avec 1 pixel plus grand que le texte Technology.
Le texte d'attribut a un problème avec la même taille de police, alors changez la taille d'un mot, cette chose fonctionne avec moi.
C'est peut-être un bogue xcode, mais cette astuce fonctionne pour moi.
la source
Le même problème.
Résolu: cochez simplement sélectionnable dans TextView. Sans cela, j'ai une police système standard.
la source
Double-cliquez et installez la police sur le système. Cela fonctionnera (Xcode 8.2)
la source
La solution @Hamidptb fonctionne, assurez-vous d'obtenir le nom correct de la police (une fois que vous l'avez ajoutée au livre de polices)
Ouvrez l'application Font Book, accédez à votre police puis appuyez sur Commande + I. Le nom PostScript est le nom de la police que vous souhaitez utiliser ici:
UILabel.appearance (). Font = UIFont (nom: " PostScriptName ", taille: 17)
la source
J'essayais d'obtenir des cellules tableView avec du texte comportant plusieurs paragraphes. Les chaînes attribuées semblaient être un moyen d'obtenir un espace supplémentaire entre les paragraphes (quelque chose d'un peu plus agréable que de faire deux sauts de ligne dans la chaîne). Je suis tombé sur ceci et d'autres articles lorsque j'ai découvert que les paramètres IB ne s'appliquaient pas au moment de l'exécution lorsque vous vouliez mettre un texte différent dans la cellule.
La principale chose que j'ai trouvée a été d'ajouter une extension à String (en utilisant Swift) pour créer une chaîne attribuée avec certaines caractéristiques. L'exemple ici utilise la police Marker Felt, car elle se distingue facilement de Helvetica. L'exemple montre également un petit espacement supplémentaire entre les paragraphes pour les rendre plus distincts les uns des autres.
Ensuite, dans ma tableViewCell personnalisée, vous lui envoyez le texte que vous souhaitez et il le convertit en une chaîne attribuée sur le UILabel.
Dans le contrôleur de vue avec tableView, vous devez enregistrer votre cellule dans viewDidLoad () - J'ai utilisé une pointe, donc quelque chose comme:
Pour que la cellule détermine sa hauteur, créez une cellule prototype qui est utilisée pour obtenir des informations sur la taille et qui n'est jamais ajoutée à tableView. Donc, dans les variables de votre contrôleur de vue:
Puis dans (probablement remplacer - en fonction de votre contrôleur de vue) heightForRowAtIndexPath:
Dans le code ci-dessus, le prototypeCell sera rempli la première fois qu'il sera nécessaire. Le prototypeCell est ensuite utilisé pour déterminer la hauteur de la cellule après le processus de dimensionnement automatique. Vous devrez arrondir la hauteur avec la fonction ceil (). J'ai également ajouté un facteur de fudge supplémentaire.
Le bit de code final est la façon dont vous configurez le texte de la cellule. Pour cet exemple, simplement:
Aussi, voici une photo de la plume. Épinglé l'étiquette sur les bords de la cellule (avec une marge souhaitée), mais a utilisé une contrainte «Supérieur ou égal», avec une priorité inférieure à «Obligatoire» pour la contrainte inférieure.
Définissez la police de l'étiquette sur Attribuée. La police IB réelle n'avait pas d'importance.
Le résultat dans ce cas:
la source
En cas de chaîne attribuée, vous pouvez ajouter une police personnalisée dans la liste des polices comme - Cliquez sur l'icône de police pour afficher la boîte de dialogue suivante. Dans la boîte de dialogue suivante, vous pouvez ajouter votre propre catégorie ou une existante pour la police personnalisée. boîte de dialogue de police attribuée
Après avoir cliqué sur Gérer les polices, il ouvre la boîte de dialogue suivante, sélectionnez la catégorie que vous avez créée ou existante. Cliquez sur + signe pour ajouter une police dans la catégorie. Boîte de dialogue Gérer la police
la source
c'est avoir une solution simple et rapide et cela fonctionne dans mon cas. cette solution consiste à ajouter une ligne de code dans la fonction didFinishLaunchingWithOptions du fichier AppDelegate.swift:
pour textViews :
pour les étiquettes :
et pour le reste de UiView comme celui-ci deux ☝️
la source
Pour toute personne appliquant des polices personnalisées à une chaîne attribuée dans le code: essayez de la définir
viewDidLayoutSubviews
. Mon erreur a été de le faireviewDidLoad
, cela ne sera pas appliqué là-bas.la source