2010-06-06 5 views
0

Dans la partie inférieure de mon UIView principal, j'ai un UIScrollView avec un UIImageView à l'intérieur.Déplacement d'un UIIMageView en dehors d'un UIScrollView

J'aimerais déplacer l'UIImageView de l'UIScrollView vers la partie supérieure de mon UIView.

Je suis capable de déplacer mon UIImageView à l'intérieur de l'UIScrollView, mais à l'extérieur, je ne peux pas. UIImageView reste dans UIScrollView, c'est le parent.

Une idée?

Merci d'avance pour toute aide.

Meilleures salutations,

Alx

Répondre

0

Si je comprends bien, vous ajoutez dans le code UIImageView comme sous-vue UIScrollView, mais plus tard ne peut pas faire marche arrière.

Si oui, dans votre UIViewController utiliser quelque chose comme:

[yourImageView removeFromSuperview]; 
[self.view addSubview:yourImageView]; 

Sinon, ajoutez plus de détails à votre question ...

+0

C'est '-removeFromSuperview', pas' -removeFromSuperView' ... –

+0

Le truc c'est que je veux faire glisser mon UIImageView depuis un UIScrollView vers mon UIView principal. Donc, je dois le retirer de l'UIScrollView et ensuite l'ajouter à la vue principale, comme vous l'avez dit. Je fais ça dans la méthode TouchesBegan. Mais ce n'est pas suffisant. Parce que quand je fais glisser l'image, dans la méthode TouchesMoved je fais ce que je pense que je devrais faire pour déplacer l'image, mais le mouvement est une contrainte à la scrollview. Je n'arrive pas à comprendre ce que je dois faire pour déplacer l'image dans la vue principale. L'image reste dans le scrollview. – Alx

+0

Hmm ... Votre UIImageView n'est pas simplement sur UIScrollView (comme c'est la sous-vue) - c'est une sous-vue de contentView de scrollview. C'est pourquoi, je pense, vous ne pouvez pas déplacer l'image à l'extérieur de scrollview.Et la seule solution que je peux suggérer est quelque chose comme ceci: sur les touchesBegan faire l'image comme sous-vue de la vue principale (enlever de scrollview) et continuer avec des contactsMoved avec la vue principale. – kpower

3

Ne vous laissez pas berner par l'analogie de l'interface utilisateur. Les vues ne sont pas réellement des objets physiques qui peuvent être facilement ramassés et déplacés d'un endroit à l'autre. Nous créons l'illusion d'objets physiques avec un code qui n'a rien à voir avec le mouvement apparent de l'illusion.

Pour faire ce que vous voulez, il faudra du travail. Les vues ne se dessinent que dans leurs super vues. Son cadre est défini par sa position dans la vue d'ensemble. Une fois que le cadre est défini comme étant en dehors de la super vue, il ne se dessine plus et disparaît de l'interface utilisateur. C'est pourquoi vous ne pouvez pas faire glisser l'UIImage où vous voulez.

Ce que vous aurez à faire est de créer une vue d'ensemble transparente qui s'étend à la fois sur la vue scrollview et sur la vue cible. Lorsque l'utilisateur initie le glisser, vous devrez supprimer le UIImageView de la vue de défilement et l'ajouter à la vue d'ensemble (alternativement, cacher le UviewmageView de défilement et créer un double dans la vue d'ensemble). L'UIImage va alors se dessiner dans la vue d'ensemble, ce qui créera l'illusion qu'il est sorti de la vue déroulante. Ensuite, vous inversez le posséder à la vue de la cible.

Vous voudrez probablement repenser votre design au moins pour l'iPhone. Il est très difficile pour les utilisateurs de faire glisser des éléments sur le petit écran, en particulier s'ils doivent faire défiler eux-mêmes.

+0

[iphone] xcode destination – Alx

Questions connexes