J'ai rencontré quelque chose d'un peu étrange avec contentInsets
J'ai un UITextView dans mon story-board avec un contentInset de 50 gauche, comme j'essaye d'ajouter un peu de remplissage à mon uitextview
Cependant, une barre de défilement apparaît au bas de la vue uitext, comme indiqué ci-dessous dans ce test:
J'avais l'impression que contentInset écrase la uitextview sans provoquer cette barre de défilement horizontale. Comment puis-je supprimer le besoin de la barre de défilement horizontale et rendre tout - l'encart ET tout le texte de la vue uitextview - visible sans qu'il soit nécessaire de l'utiliser? barre de défilement.
N.B: Je ne demande pas d'empêcher le défilement horizontal ou de ne pas afficher la barre de défilement (donc couper du texte)
Merci beaucoup!
Pour atomk (UITextView s'appelle ss)
NSLog(@"Content Size Before %f",self.ss.contentSize.width); Logs: 280
CGSize size=self.ss.contentSize; size.width=size.width-50;
[self.ss setContentSize:size];
NSLog(@"Content Size After %f",self.ss.contentSize.width); Logs: 230
Il n'y a pas de différence visible entre la vue avec le code ajouté et celle avant l'ajout, donc quelque chose ne va pas! (Merci)
UPDATE: Cette solution est obsolète depuis iOS 7.
Voir cette réponse ci-dessous . Dans iOS 7.0, la propriété textContainerInset
sur UITextView
a été introduite:
textView.textContainerInset = UIEdgeInsetsMake(0, 50, 0, 0);
Solution pré-iOS 7:
J'avais l'impression que contentInset écrase uitextview sans provoquer cette barre de défilement horizontale ...
Je crains que ce ne soit pas ainsi que contentInset
fonctionne avec un UITextView
. Voir documentation Apple pour contentInset
où il est indiqué:
Distance à laquelle la vue du contenu est insérée dans la vue de défilement entourante ... Utilisez cette propriété pour ajouter à la zone de défilement autour du contenu.
Le contentInset
est ajouté autour du contenu.
Vous pouvez changer le contentSize
dans viewDidLayoutSubviews
en utilisant le code que vous avez inclus ci-dessus:
- (void)viewDidLayoutSubviews
{
self.textView.contentInset = UIEdgeInsetsMake(0, 50, 0, 0);
NSLog(@"Content Size Before %f",self.textView.contentSize.width); //Logs: 280
CGSize size=self.textView.contentSize;
size.width=size.width-50;
[self.textView setContentSize:size];
NSLog(@"Content Size After %f",self.textView.contentSize.width); //Logs: 230
}
Cependant, le texte est coupé du côté droit:
Le meilleur moyen que j’ai pu obtenir l’apparence d’un remplissage horizontal dans un UITextView
consiste à le positionner dans un conteneur UIView
. Dans votre cas, créez simplement un UIView
de la même taille que votre vue texte actuelle et ajoutez une vue texte plus étroite de 50 pixels à l'intérieur de la vue conteneur.
Cette solution de contournement peut poser problème si vous avez un arrière-plan pour votre vue texte, mais d'après votre capture d'écran ci-dessus, cela ne semble pas être un problème pour vous.
UITextView
(cadre en rouge) à l'intérieur de UIView
conteneur:
Si votre UITextView
a un fond, voir:
J'espère que cela vous aidera et si quelqu'un peut trouver une meilleure solution, j'aimerais en entendre parler!
Dans iOS 7, UITextView
est basé sur TextKit et possède une nouvelle propriété textContainerInset
. Il se comporte comme prévu:
UITextView *textView = ...;
// Left inset of 50 points
textView.textContainerInset = UIEdgeInsetsMake(0.0, 50.0, 0.0, 0.0);