UITextView-la police de paramétrage ne fonctionne pas avec iOS 6 sur XCode 5
j'utilise des storyboards pour mon interface. J'utilisais auparavant XCode 4.6 et je suis sorti sur iOS 6. J'ai depuis mis à jour vers iOS 7 en utilisant XCode 5 et mis à jour le Storyboard pour fonctionner correctement avec XCode 5. J'ai un problème cependant:
UITextView
ne veut pas afficher les changements de police dans le code. Les changements de couleur du texte fonctionnent bien. Tout autre changement de propriété est acceptable. La police, pas du tout. J'utilisais une police personnalisée, donc j'ai vérifié différentes polices avec différentes tailles (i.e. systemFontOfSize:
) mais ça n'a pas marché. La vue texte seulement montre la police qui est définie dans le Storyboard. Que pourrais-je manquer ici? Y a-t-il des contraintes de mise en page automatique qui nuisent à ce genre de chose? J'ai eu quelques problèmes avec les contraintes pendant la migration, mais comme je l'ai dit, les polices fonctionnent bien dans iOS 7.
je suppose que c'est quelque chose dans le Storyboard que je manque, comme si je créais un UIViewController
et ajoutais une vue texte en code, ça marche très bien.
j'aurais mis un peu de code, mais je ne suis pas sûr que ça aiderait du tout dans ce cas.
11 réponses
encore plus étrange, cela ne se produit que sur iPhone, pas iPad.
si vous définissez la police en code et que vous ne voulez pas d'une vue texte modifiable, faites ceci:
textView.editable = YES;
textView.font = newFont;
textView.editable = NO;
dans mon cas, il s'agit de la propriété "sélectionnable" D'UITextView.
donc j'ai vérifié la propriété 'selectable' D'UITextView dans L'éditeur Storyboard pour la définir Oui
et plus tard dans viewWillAppear définir cette propriété.
textview.text = @"some text";
textview.selectable = NO;
le problème a été causé par le fait que la propriété editable
était fausse dans le scénario-Maquette. Je n'ai absolument aucune idée pourquoi cela a fait que la police est restée inchangée - et seulement sur iOS 6.
pour moi c'est le travail si vous définissez le texte de votre UITextView et après avoir défini la police (même 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. Le problème est toujours présent sur iOS9. Ce que j'ai découvert, c'est que lorsque vous mettez " Interaction de L'utilisateur activé = false " dans le constructeur de L'Interface, vous pouvez laisser modifiable et sélectionnable = vrai et l'utilisateur ne sera pas en mesure d'éditer une vue de texte.
donc, ma solution est:
- Ensemble Utilisateur Interaction activée = faux in IB
- Set Modifiable = True IB
- Set Selectable = True in IB
- configurez votre vue texte de la manière que vous voulez.
Code pour swift:
textOutlet.editable = true
textOutlet.textColor = UIColor.whiteColor()
textOutlet.font = UIFont(name: "ArialMT", size: 20)
textOutlet.editable = false
ou si vous changez le texte en premier il est résolu 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 intitulée: Selectable (après avoir sélectionné L'UITextView dans le storyboard)
ce problème ne se produit que lors de la définition de propriété Sélectionnable à FALSE dans le constructeur D'Interface.
dans le cas où vous êtes tenu d'avoir les propriétés modifiables et sélectionnables réglé à FALSE le faire à partir du CODE et non dans le constructeur D'Interface.
en résumé, rendre Modifiable et Sélectionnable properties = OUI dans le Interface Builder et puis ajoutez le code suivant dans si vous avez besoin que les propriétés soient FALSE:
_textView.editable = NO;
_textView.selectable = NO;
Espère que cette aide,
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
}
}
dans mon cas (développement sur Xcode 7.3, iOS 9),
la cause était l'ordre de mise texte et font-famille/taille, pas les options de modifiable ou sélectionnable beaucoup de réponses disent là.(et je ne suis pas tout storyboard, xib sur que Textview.)
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 changées, mais autrement quand j'inverse ces deux étapes, ça marche. Le texte de réglage doit être en avance sur le réglage police de caractères de la famille du/de la taille.
comme mentionné par d'autres:
textView.font = UIFont.systemFont(ofSize: 16)
textView.isEditable = false
p.s. pas besoin à la première série isEditable
comme true
puisque c'est true
par défaut: un peu plus court, un peu plus agréable