2011-08-19 12 views
4

Je sais que j'ai posé une question il y a quelques minutes, mais je veux clarifier quelques points avant de demander l'aide de la communauté. Je suis nouveau sur le développement iOS, proche de la fin de ma première application. La seule chose qui se trouve sur mon chemin est cette UIScrollView. Je ne comprends tout simplement pas, et pourrais utiliser votre aide.Approche correcte pour implémenter le défilement vertical avec UIScrollView

Il s'agit du contrôleur de vue détaillée d'une application de zoom avant avec une barre d'onglets. J'ai environ 8 champs (pour des choses comme les numéros de téléphone et autres) tirant d'un .plist. De toute évidence, ceux-ci prennent assez de place que je pourrais utiliser un peu plus de biens immobiliers. Je suppose que cela doit être à propos de la taille de deux vues verticalement, mais je ne comprends pas comment allouer ce genre d'espace à un UIScrollView. Certains tutoriels que j'ai lus disent que vous n'avez même pas besoin de le définir dans l'en-tête, ce que je doute et ne comprends pas. En outre, je ne comprends pas comment obtenir simplement l'application pour défiler vers le haut et vers le bas seulement. Les exemples d'Apple ont des cycles de déplacement constants qui inversent les images horizontales.

Je doute que cela fasse vraiment une différence, mais j'ai une image qui est en arrière-plan. Je vais charger la vue en plus de ça.

Ma question est large, donc je ne m'attends pas à ce que vous preniez le temps de vous asseoir et d'écrire tout le code pour moi (et je ne vous le demanderais pas). Juste un aperçu de conseils rapides et utiles m'aiderait à comprendre comment charger cette vue dans le contexte de mon projet.

Merci beaucoup!

Répondre

6

C'est assez simple. Ajoutez un UIScrollView à votre vue. Ajoutez vos champs et autres à la scrollview. Dans viewDidLoad ou quelque chose de similaire, vous devez définir le contentSize sur votre scrollview. C'est la zone "virtuelle" qui sera défilable. Ce sera généralement plus grand que le cadre de la scrollview. Dans votre cas, vous avez indiqué qu'il devrait être à peu près le double de la largeur.

Par exemple, si vous aviez un scrollview avec une vue à l'intérieur, et que vous vouliez vous assurer que toute la vue est visible par défilement:

self.scrollView.contentSize = self.contentView.frame.size; 
+0

Très bien, si View est le parent de Scroll view, comment suis-je censé ajouter du contenu (probablement une question stupide) –

+0

Vous, monsieur, m'a sauvé. Merci! –

1

Il suffit de définir la taille du contenu de UIScrollView après avoir ajouté toutes les commandes/bouton/textfields etc. par exemple, vous ajoutez 10 textfields dans UIScrollView alors la taille du contenu de UIScrollView sera

lastTextField.frame.origin.y+lastTextField.frame.size.height+20; 20 is for margin. 

Ce que ça me permettra de savoir si vous voulez savoir quelque chose de plus lié à votre application.

+0

Comment dois-je ajouter tout le contenu du défilement vu sa taille? Existe-t-il une manière spécifique de le faire dans le constructeur d'interface? (Probablement une question vraiment stupide) –

+0

Oui, vous pouvez le faire aussi dans le constructeur de l'interface. C'est un peu difficile. Commencez par changer la classe de votre UIView par défaut en UIScrollView. puis supprimez la barre d'état supérieure en la définissant sur none dans les propriétés de UIViewController dans IB. puis faites glisser autant que vous voulez placer tous les composants puis réduire à nouveau la hauteur de vue à 460 aur 416 dépend si vous utilisez le contrôleur de navigation ou non. Puis dans la vue Did load a défini la taille du contenu de UIScrollView. –

2
//setting scrollview zoom level 
    self._scrollview.minimumZoomScale=0.5; 

    self._scrollview.maximumZoomScale=6.0; 

    self._scrollview.contentSize=CGSizeMake(320,500); 

vous avez à la sortie vue défilement .h class et @property @synthesis cette vue de défilement. alors vous pouvez faire défiler vers le haut et vers le bas, si vous voulez seulement défiler verticalement, alors vous devez aller au constructeur d'interface et décocher le défilement horizontal.

2

Vous pouvez définir quelques paramètres pour votre défilement afin de limiter le défilement horizontal ou vertical. Quelques plus importants sont les suivants:

// pseudcode here, start typing "[scrollView " then press escape to get a intelli-sense of all // the things you can set for the scrollview. 

// values could be YES/NO or TRUE/FALSE, I can't remember which one but 
// I think it's YES/NO. Once you start scrolling, the phone will determine 
// which way you're scrolling then lock it to that direction 
[scrollView setDirectionalLockEnabled:YES]; 

// when you slide the view, if enough of the next part of the view is visible, 
// the scrollview will snap or bounce the scrollview to fit this new "page". 
// think of swiping feature to navigate the iPhone home screens 
// to show different "pages" of iphone apps 
[scrollView setPagingEnabled:YES]; 

// as a safe guard, make sure the width of your scrollview fits snuggly with the content 
// it is trying to display. If the width is more than necessary to display your table of 
// data vertically, sometimes the scrollview will cause the 
// horizontal scrolling that you don't want to happen and you get bi-directional scrolling 
Questions connexes