在視圖控制器,如果使用的是故事板,連接(在我的例子collectionView
)使用IBOutlet中,(在我的例子collectionViewWidth
)集合視圖寬度約束作爲IBOutlet中和UICollectionView
作爲IBOutlet中UICollectionviewFlowLayout
(collectionViewFlowLayout
在我的例子) 。可以用下面的同時改變它的集合視圖幀和細胞:
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 5, execute: {
self.width = 400
self.height = 400
self.collectionView.performBatchUpdates({
self.collectionViewFlowLayout.invalidateLayout()
self.collectionView.setCollectionViewLayout(self.collectionViewFlowLayout, animated: true)
}, completion: { _ in })
})
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 5, execute: {
self.collectionViewWidth.constant = 50
UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseOut,
animations: self.view.layoutIfNeeded, completion: nil)
})
你需要聲明width
和height
VAR與例如100初始值類的屬性。然後在上面的代碼中進行更改。由於下面的實施,它成爲可能。請注意,這需要您採用協議UICollectionViewDelegateFlowLayout
。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: width, height: height)
}
感謝您的幫助,但我有一個問題,現在我有不好的影響時,動畫開始。 單元格內的圖像變寬和變窄。 –
@ jimmy-gonçalves你能提供一些關於你如何建立細胞的更多信息嗎?細胞大小如何變化? –
我把我的實際代碼展示給你看,我的單元格實際上是用UICollectionFlowLayout中的方法設置的,它的大小爲item的大小。 –