J'utilise des storyboards pour mon interface utilisateur. J'utilisais précédemment XCode 4.6 et était disponible sur iOS 6. Depuis, j'ai mis à jour iOS 7 à l'aide de XCode 5 et j'ai mis à jour le Storyboard pour qu'il fonctionne correctement avec XCode 5. J'ai un problème:
UITextView
ne veut pas afficher les modifications de police dans le code. Les changements de couleur du texte fonctionnent bien. Tous les autres changements de propriété sont bien. Police, pas du tout. J'utilisais une police personnalisée, j'ai donc vérifié différentes polices avec différentes tailles (c'est-à-dire systemFontOfSize:
) mais cela n'a pas fonctionné. La vue texte niquement montre la police définie dans le Storyboard. Que pourrais-je manquer ici? Existe-t-il des contraintes de mise en page automatique qui gênent ce genre de chose? J'ai eu quelques problèmes de contraintes lors de la migration, mais comme je l'ai dit, les polices fonctionnent bien sous iOS 7.
Il me manque quelque chose dans le story-board, car si je crée un UIViewController
et ajoute une vue de texte dans le code, cela fonctionne bien.
Je mettrais un peu de code, mais je ne suis pas sûr que cela aiderait du tout dans ce cas.
Le problème était dû à la propriété false de la propriété editable
dans le storyboard. Je ne sais absolument pas pourquoi cela a laissé la police inchangée - et uniquement sur iOS 6.
Encore plus étrange, cela ne se produit que sur iPhone, pas sur iPad.
Si vous définissez la police dans le code et que vous ne voulez pas d'une vue de texte modifiable, procédez comme suit:
textView.editable = YES;
textView.font = newFont;
textView.editable = NO;
Dans mon cas, il s'agit de la propriété 'sélectionnable' de UITextView.
J'ai donc coché la propriété 'sélectionnable' de UITextView dans Storyboard Editor pour la définir, puis sur Oui.
et plus tard dans viewWillAppear, définissez cette propriété sur NO.
textview.text = @"some text";
textview.selectable = NO;
Pour moi, le travail est simple si vous définissez le texte de votre UITextView et, ensuite, la police (identique pour la couleur):
_myTextView.text = @"text";
[_myTextView setFont:[UIFont fontWithName:@"Helvetica Neue" size:18.0f]];
_myTextView.textColor = [UIColor whiteColor];
Merci pour toutes les réponses les gars. Le problème est toujours présent sur iOS9. Ce que j’ai découvert, c’est que lorsque vous définissez "interaction utilisateur activée = false" dans le Générateur d’interface, vous pouvez laisser modifiable et sélectionnable = true et l'utilisateur ne pourra pas éditer une vue de texte.
Donc, ma solution est:
Code pour Swift:
textOutlet.editable = true
textOutlet.textColor = UIColor.whiteColor()
textOutlet.font = UIFont(name: "ArialMT", size: 20)
textOutlet.editable = false
Ou si vous modifiez le texte d'abord, il est résolu comme par magie
textOutlet.text = "omg lol wtf"
textOutlet.textColor = UIColor.whiteColor()
textOutlet.font = UIFont(name: "ArialMT", size: 20)
J'ai trouvé que la taille de la police était ignorée. Cela a été résolu en cochant la case à cocher intitulée: Sélectionnable (après avoir sélectionné UITextView dans le storyboard)
Ce problème se produit uniquement lorsque vous définissez la propriété Selectable sur FALSE dans Interface Builder.
Si vous devez définir FALSE sur les propriétés Editable et Selectable, faites-le à partir du CODE et non dans Interface Builder.
En résumé, rendre modifiable et sélectionnable propriétés = OUI dans le Interface Builder, puis ajoutez ce qui suit code au cas où vous auriez besoin que les propriétés soient FALSE:
_textView.editable = NO;
_textView.selectable = NO;
J'espère que cela t'aides,
Swift 3 catégorie qui a fonctionné pour moi:
extension UITextView {
func setFontAndUpdate(_ font: UIFont?) {
self.font = font
// Font doesn't update without text change
let text = self.text
self.text = nil
self.text = text
}
}
Comme mentionné par d'autres:
textView.font = UIFont.systemFont(ofSize: 16)
textView.isEditable = false
p.s. pas besoin de définir d'abord isEditable
comme true
puisqu'il s'agit de true
par défaut: un peu plus court, un peu plus joli
Dans mon cas (développement sur Xcode 7.3, iOS 9),
La cause en était l’ordre de réglage du texte et la taille de la police/famille, et non les options de modification ou de sélection spécifiées par de nombreuses réponses (et je n’obtiens pas de storyboard, xib sur cette vue en texte).
Si j'entre comme
[myTextView setFont:[UIFont fontWithName:@"HelveticaNeue-Italic" size:20]];
myTextView.attributedText = mAttStr;
alors la famille et la taille de la police ne sont pas modifiées, mais sinon, lorsque j'inverse ces deux étapes, cela fonctionne. Le texte de réglage doit précéder celui de la famille/taille de la police.