2014-04-16 4 views
1

Je fais une application et je veux ajouter une page de termes et conditions, donc je veux avoir une grande fenêtre défilante de texte sur un seul écran. Les deux classes que j'ai regardées sont UIScrollView et UITextView. UIScrollView est facile à faire défiler avec, mais je ne suis pas sûr de savoir comment ajouter tout le texte formaté dont j'ai besoin sans créer manuellement chaque étiquette, le formater et l'ajouter à la vue au bon endroit. J'ai créé un UITextView (non éditable, non sélectionnable) avec un texte attribué, ce qui m'a donné ce dont j'avais besoin, mais ensuite je n'ai pas réussi à le faire défiler les limites de la fenêtre (ie je ne pouvais pas aller au-delà bord de l'écran, même après que j'ai changé sa taille de contenu et changé son cadre pour être beaucoup plus grand que l'écran lui-même). J'ai essayé aussi une fusion des deux, avec quelque chose comme ça (après avoir désactivé le défilement sur le texte):Quelle est la meilleure façon d'afficher une grande quantité de texte formaté dans un seul écran dans une application iOS7?

_scrollView.scrollEnabled = YES; 
_scrollView.contentSize = CGSizeMake(320, 2000); 
[_textView removeFromSuperview]; 
[_scrollView addSubview:_textView]; 

Mais la vue du texte n'a jamais affiché dans la vue de défilement. Je suis sûr que c'est un problème rencontré par d'autres personnes, car de nombreuses applications ont des pages similaires à celle que je décris. J'espère que quelqu'un peut m'aider à trouver un moyen de le faire sans utiliser UIScrollView et en créant manuellement une étiquette pour chaque morceau de texte que je veux ajouter.

+0

C'est plus une préférence personnelle. J'ai toujours utilisé l'UITextView par lui-même, il a un scroller intégré. – logixologist

+0

"Je ne pouvais pas aller au-delà de la bordure inférieure de l'écran" Je ne sais même pas ce que cela signifie. Un UITextView défile pour que l'utilisateur puisse voir tout le texte. Quel est le problème? – matt

+0

@matt C'est ce que je pensais, mais ça arrête tout simplement de défiler quand j'atteins le bas de l'écran, ce qui est fondamentalement immédiat. Le texte continue très nettement au-delà, mais la barre de défilement est de la taille de tout l'écran et ne me laisse pas aller plus loin. –

Répondre

2

UITextView hérite de UIScrollView. Vous n'avez pas besoin d'avoir un UITextView à l'intérieur d'un UIScrollView, sauf si vous voulez ajouter des vues multiples dans celui-ci.

Vous pouvez créer un UITextView qui prend tout l'écran dans un UIViewController comme ceci:

UITextView *myTextView = [[UITextView alloc] initWithFrame:self.view.bounds]; 
myTextView.text = @"some large text"; 
myTextView.font = [UIFont fontWithName:@"Arial" size:20]; 
myTextView.scrollEnabled = YES; 
myTextView.editable = NO; 
[self.view addSubview:myTextView]; 

La propriété contentSize sera réglée automatiquement en fonction de la taille du texte. Vous pouvez également utiliser la méthode [myTextView sizeToFit] pour redimensionner le UITextView pour l'adapter à son texte.

0

Il existe une troisième méthode qui consiste à charger une UIWebview avec une page/un fichier html interne. En ce qui concerne votre UITextview - définissez la taille de l'image de sorte qu'elle corresponde aux limites de l'écran/self.view, si la taille de l'image est plus grande que screen/view.frame, alors vous aurez des problèmes comme l'impossibilité de défiler - ceci est car en ce qui concerne la vue texte, le texte entier est déjà affiché seulement il est affiché dans la partie du cadre qui n'est pas visible à la vue. UITextview se comporte comme un scrollview avec la taille du contenu définie automatiquement de sorte que tout votre texte devrait être visible en faisant défiler. En ce qui concerne UIScrollviews - semblable à la discussion sur UITextview, vous devez définir la taille de l'image dans les limites de l'écran/self.view. La taille du contenu doit être suffisamment grande pour accueillir votre plus grand objet (cadre sage). Votre idée de placer le UITextview plus grand que frame à l'intérieur de l'UIScrollview est saine et devrait fonctionner. il suffit d'ajouter textview comme une sous-vue de la scrollview.

Questions connexes