8
votes

Faire la sous-vision d'un UiscrollView corrigé pendant que les autres sous-espoirs sont confidentiels

Je veux faire une vue avec trois sous-espions empilées les unes sur les autres avec la sous-Sous-Sous-site moyen défilable avec les autres fixes.

Comment puis-je atteindre ce problème par programme? J'ai essayé

  • Pour définir le contenu de la vue racine sur la taille de la vue défilable, mais qui rend toutes les vues Scroll.

    -Sette le contenu de la sous-Sous-Sous-Sous-View sans régler aucune propriété pour la vue racine mais qui rend toutes les vues sanscrolles.

    aide s'il vous plaît. Je suis nouveau à iOS.

    Merci d'avance


0 commentaires

3 Réponses :


26
votes

Vous pouvez utiliser le ScrollViewDidscroll: Délégué rappel sur le Uiscrollview Pour régler la position de votre vue. Dans le rappel, obtenez le contentoffset de la vision de ScrollView et utilisez-le pour définir la position de la vue fixe.

Par exemple, si vous voulez que votre vue fixe reste toujours 100 px dans le haut de la vision de ScrollView, définissez sa trame initiale sur (0, 100, largeur, hauteur), puis dans le rappel, définissez le cadre sur (0 , contentoffset.y + 100, largeur, hauteur).

Le résultat est que la sous-vision apparaît fixe à une hauteur donnée.


5 commentaires

Merci! Ça a marché. Juste que mes enveloppes de scrolls ont besoin de défilement horizontal afin de mettre à jour la coordonnée X du cadre dans le délégué.


aucun problème! Je suppose que tu faisais un défilement vertical - content que tout ait fonctionné.


Frais. Je l'ai vérifié et cela semble que cela correspond exactement à ce que UitailView fait avec l'arrière-plan Vue d'arrière-plan depuis IOS 3.2.


Il fonctionne avec une colonne supplémentaire dans une vision de la table qui est cool, mais j'ai des problèmes de vues (étiquettes), l'élément que je veux être fixé séjour dans sa position, mais il est couvert par les vues mobiles à l'intérieur de la vision de ScrollView, toute idée de Qu'est-ce qui pourrait se passer?


Vous devez les déplacer devant ces points de vue avec quelque chose comme [Self.View BringSubiewtoFront: label] .



3
votes

Si votre UISCROLLView a une vue superview (c'est-à-dire une vue de conteneur), vous pouvez ajouter votre affichage «corrigé» sous forme de sous-visView de SuperView au lieu de l'UISCrollView. Vous ne devrez calculer que vos coordonnées de trame une fois.


0 commentaires

1
votes

Vous pouvez le faire en déplacement de Sous-View de Uiscrollview à Super View de ScrollView comme:

Placez / Définissez votre bouton sur la vue Scroll (pas à l'intérieur de la vue de défilement) comme indiqué ici dans cet instantané. Et également définir des contraintes de bouton (position) par rapport à une vue super de votre vision de ScrollView.

 Entrez la description de l'image ici

voici ref. instantané de la hiérarchie de la position de chaque vue sur l'autre.

 Entrez la description de l'image ici


0 commentaires