0

私は、自分のuicollectionviewのセルにアイテム(ボタン、ラベル)を持っています。すぐに私のデバイスの項目を回転させると、2回表示されます....私はすでにviewWillTransitionを呼び出しましたが、効果はありません。常に同じ問題です。ありがとう!ここに私のコードは次のとおりです。コレクションビューのアイテムは、デバイスローテーション後に2回表示されます。

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 

    collectionView.collectionViewLayout.invalidateLayout() 
    collectionView.layoutIfNeeded() 
} 

public override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
    super.viewWillTransition(to: size, with: coordinator) 

    coordinator.animate(alongsideTransition: { (context) in 
     self.collectionView.collectionViewLayout.invalidateLayout() 

    }, completion: nil) 
} 

答えて

0

+0

viewdidlayoutサブビューにcollectionviewをリロードしてみてください、私はカスタムセルのファイルを使用して、私の問題を解決しました。次に、(cellForItemAt indexPath関数で)cell.myLabel.text = ""を使ってラベルを呼び出します。今私の次の問題は次のとおりです。このラベルはcontentViewに制約があります。すべてが期待どおりに配置されます。今では、デバイスを回転させると、セル内のラベルの位置が彼の制約に関して間違っています。どのように私はそのPLZを管理できますか?ありがとう!回転すると – Silvering

+0

になります。 viewdidlayoutsubviewsメソッドが呼び出します。コレクションをリロードします。私は1つのアプリに直面している。私はthis.ifのように固定されていませんが、以前の向きでセルを再ロードすることはありません。それは変化しない制約です。私はそれが理由かもしれません –

+0

UICollectionViewDelegateメソッドを実装することでこれを行うことができますcollectionView(_:targetContentOffsetForProposedContentOffset :):\tレイアウトの更新中、またはレイアウト間で遷移するとき、コレクションビューはこのメソッドを呼び出して、アニメーションの終わりに使用するために提案されたコンテンツオフセット。レイアウトやアニメーションによってアイテムがデザインに最適でない方法で配置される可能性がある場合は、新しい値を返すことがあります。 –

関連する問題