Обновить UICollectionViewFlowLayout без создания нового UICollectionView? - PullRequest
0 голосов
/ 21 мая 2018

Я хотел бы обновить некоторые 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);

1 Ответ

0 голосов
/ 21 мая 2018

Нет необходимости снова инициализировать 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();

...