UITextView exclue de la ligne de fond, mais la mauvaise hauteur de ligne
J'ai un UITextView où l'utilisateur peut créer des notes et de les enregistrer dans un fichier plist.
Je veux être en mesure de montrer des lignes comme une normale de l'ordinateur portable. Le problème que j'ai est
que le texte ne sont pas alignées correctement.
L'image ci-dessous explique le problème tout à fait bien.
C'est dans ce contexte que j'utilise pour créer des lignes comme les Notes.app
C'est mon code pour la création de l'arrière-plan de mon UITextView
:
textView.font = [UIFont fontWithName:@"MarkerFelt-Thin" size:19.0];
textView.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"Notes.png"]];
Je sais que le UIFont.lineHeight
propriété est disponible uniquement dans > iOS 4.x.
Donc je me demande si il y a une autre solution à mon problème?
OriginalL'auteur Fernando Redondo | 2011-03-21
Vous devez vous connecter pour publier un commentaire.
Vous devriez essayer et de tracer vos lignes par programme plutôt que d'utiliser une image. Voici un exemple de code de comment vous pouvez accomplir cela. Vous pouvez sous-classe
UITextView
et remplacer c'estdrawRect:
méthode.NoteView.h
NoteView.m
MyViewController.h
MyViewController.m
Prendre un coup d'oeil à la documentation d'Apple pour La gestion du Clavier, plus précisément "le Déplacement du Contenu Qui Se Trouve Sous le Clavier". Il explique comment écouter pour NSNotifcations et ajuster votre point de vue correctement.
Ok je comprends, merci. Si vous cliquez sur entrer et de créer de nouvelles lignes de texte dans la mesure où le texte serait invisible sous le clavier si votre solution n'a pas empêché que cela se produise, vous pouvez alors voir que les lignes ne sont pas alignées correctement plus? Si vous tapez juste trois lignes, tout est parfait, mais dès qu'il devient de plus en plus que le NoteView.cadre.taille.la hauteur des lignes est mal rédigé. N'est ce arrivé à vous?
Ok c'est absolument fantastique. Je l'utilise avec un affichage de texte chargé à partir d'un XIB - il suffit de faire une UITextView et définir sa classe à NoteView, c'est fait. Fonctionne à merveille. J'ai fait un changement, je suis de départ pour la boucle de 1, afin de ne pas tracer une ligne au-dessus de la première ligne de texte ressemble plus joli, et plus comme un véritable bloc-notes. Mais vraiment cette réponse va au-delà de ce qui pourrait être attendu de StackOverflow.
n'oubliez pas d'ajouter
self.contentMode = UIViewContentModeRedraw;
dansinitWithFrame:
de cette façon, le texte et les lignes défilent ensemble. Sinon, absolument génial solution!Je ne suis pas sûr quand il s'est cassé, mais la police.leader de la propriété retourne toujours 0 pour moi. Au lieu de cela vous devez utiliser la police.lineHeight qui fonctionne très bien sur iOS 9
OriginalL'auteur Adolfo
Je pense que le problème est avec votre image, le jaune de l'espace sur la ligne est la création du problème.
Vous devez modifier l'image.
Et beau travail.
oui u r droit. - je vérifier cela par moi-même. mais toujours pas capable de résoudre ce problème.
Le contentInset propriété ne fonctionne pas sur ma solution à cause de l'arrière-plan est en mouvement avec le contentInset. C'est juste le contenu qui doit être déplacé. Je ne comprends pas pourquoi le UITextView par défaut ont un rembourrage sur comme 15px. Je ne sais pas si c'est réglable après mes recherches, je pense que j'ai besoin de regarder une autre façon de le résoudre. Quelqu'un ici fait dans le passé peut-être?
je veux faire cela dans mon dernier projet client. alors je laisse tout ce que la ligne de chose grâce à de nombreuses difficultés. mais si u trouver une solution alors u doit partager avec nous.
OriginalL'auteur Iqbal Khan