2017-04-25 4 views
-1

ヴィスを溶かす原因:http://i.imgur.com/TastPR9.gifvアニメーションUICollectionViewLayoutヘッダサイズが不要なフラッシュクロスが問題の

func animateHeaderResize(height: CGFloat) { 

    let layout = self.collectionView?.collectionViewLayout as! UICollectionViewFlowLayout; 
    layout.headerReferenceSize = CGSize(width: UIScreen.main.bounds.width, height: height); 

    UIView.animate(withDuration: 1, delay: 0, options: .curveEaseOut, animations: { 
     self.collectionView?.layoutIfNeeded(); 
    }) { (finished) in 
     //self.loadPosts(); 
    } 
} 

私はそれがUICollectionViewLayoutだを通じてUICollectionViewのヘッダサイズの変化をアニメーション化しようとしています。結果のアニメーションには、どこかでトリガーされたクロスディゾルブトランジションかもしれない奇妙なフラッシュとストレッチがあります。私はsetCollectionViewLayout(layout:animated :)やcollectionView(_ collectionView:layout:referenceSizeForHeaderInSectionセクション:)を実装するなど、コレクションビューのレイアウトを設定するさまざまなバリエーションを試しましたが、すべて同じアニメーションになります。

私は、コレクションビューのアイテムサイズを変更するときに同じフラッシュが発生していることに気付きました。これは私が変更できるいくつかのデフォルトの動作でしょうか? UICollectionViewFlowLayoutをサブクラス化する必要はありますか?私は検索しようとしたし、解決策を見つけることができません、正しい方向にちょうどステップを感謝します。

答えて

0

これは私のために働くことになった:

func animateHeaderResize(height: CGFloat) { 

    self.collectionView?.performBatchUpdates({ 
     let layout = self.collectionView?.collectionViewLayout as! UICollectionViewFlowLayout; 
     layout.headerReferenceSize = CGSize(width: UIScreen.main.bounds.width, height: height); 
    }, completion: { (fin) in 
     self.loadPosts(); 
    }); 

} 
関連する問題