2017-07-30 1 views
-3

Je veux invalidateLayout() du personnalisé UICollectionView lorsque les limites sont modifiées. Je sais que je peux appeler cette méthode à partir du contrôleur en utilisant viewWillLayoutSubviews(). Mais puisque je veux faire de cette UICollectionView personnalisée comme un cadre, je veux mettre en œuvre la fonction sans en fonction du contrôleur.Comment pouvez-vous dire qu'un périphérique a pivoté de sorte que vous pouvez recharger un UICollectionView

Si j'essaye de invalidateLayout() à l'intérieur override open func layoutSubviews() alors j'obtiens une boucle infinie.

Quelle est la meilleure façon de mettre en œuvre ce que je veux avec les contraintes?

+0

-vous dire lorsque vous faites pivoter périphérique que vous souhaitez mettre à jour la mise en page? –

+0

@TusharSharma vous êtes un lecteur d'esprit !! –

Répondre

0

contrôleurs de vue ont cette méthode -:

override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) { 
     collectionView.collectionViewLayout.invalidateLayout() 
    } 
+0

Etes-vous sûr que c'est UICollectionView qui a cette méthode? Pouvez-vous me donner le lien vers la documentation Apple Developer? Je ne pouvais pas le trouver –

+0

@Ham Dong Kyun est une méthode de contrôleur de vue désolé pour erreur. Vous pouvez simplement le taper et vous en obtiendrez un. –

+0

Désolé, mais j'ai explicitement expliqué que je ne veux pas le lier au contrôleur. –