我想更新某些UICollectionViewFlowLayout或UICollectionView,因为我想将单元格的大小设置为需要计算的特定数字(screenwidth / 3) - 2。 但是,我只知道如何通过创建一个新实例来分配它,这将重置许多属性并迫使我重新定义它们。这可以在其他地方更新吗?或者有更好的方法来更新ItemSize?
UICollectionViewFlowLayout layout = new UICollectionViewFlowLayout
{
SectionInset = new UIEdgeInsets(0, 0, 0, 0),
MinimumInteritemSpacing = 2,
MinimumLineSpacing = 2,
ItemSize = new SizeF(Size, Size),
ScrollDirection = UICollectionViewScrollDirection.Vertical,
};
ProfilesListView = new UICollectionView(ProfilesListView.Frame, layout);
答案 0 :(得分:1)
当您想要设置项目的大小时,无需再次初始化UICollectionViewFlowLayout
。您可以使用UICollectionViewDelegateFlowLayout
以编程方式修改大小:
public class MyCollectionDelegate : UICollectionViewDelegateFlowLayout
{
public override CGSize GetSizeForItem(UICollectionView collectionView, UICollectionViewLayout layout, NSIndexPath indexPath)
{
return new CGSize(Size, Size);
}
}
将此委托设置为您的UICollectionView:ProfilesListView.Delegate = new MyCollectionDelegate();
您可以通过更改事件GetSizeForItem()
并强制更新UICollectionView ProfilesListView.ReloadData();