2017-08-04 3 views
0

Je crée un pack d'autocollants personnalisés. C'est une application d'extension iMessage. Je sous-classe UICollectionView plutôt que d'utiliser le MSMessagesViewController de base. Cela se produit donc uniquement lorsque je sélectionne l'icône de chevron dans la vue développée pour revenir à la vue compacte. Qu'est-ce qui se passe (vous pouvez voir dans le GIF ci-dessous) est les autocollants sont placés dans la vue et semblent être placés dans leur emplacement, mais après une fraction de seconde, ils semblent réajuster leurs positions ... Y at-il quelque chose dans CollectionView Je devrais faire pour l'empêcher? Je commence à penser qu'il pourrait s'agir d'un bug, car la barre d'en-tête contenant le champ de texte, l'icône du tiroir de l'application iMessage, l'icône du cœur et l'icône de l'appareil photo semblent être à peu près identiques.CollectonView "réajuste" l'origine après chargement dans la vue

enter image description here

here is the code from github

+0

La vue est ajustée après glisser vers le bas de la vue agrandie pour clarifier les choses .. –

Répondre

1

Le problème avec votre code est que le contentInset pour votre CollectionView dans votre appel est layout() 6 pixels hors de la position d'origine. C'est pourquoi l'animation ajuste les 6 pixels une fois l'animation terminée.

il suffit de changer le UIEdgeInsets() dans votre layout() appel à l'intérieur du StickerCollectionVC à:

self.collectionView?.contentInset = UIEdgeInsets( top: screenW * 0.1 - 6, 
                  left: screenW * 0.1, 
                  bottom: 20 + (screenW * 0.1), 
                  right: screenW * 0.1) 
+0

Je ne sais pas pourquoi cela fonctionne, mais merci vous tellement! Pourquoi la position d'origine est-elle différente de l'animation? –