Можно ли создать дополнительный вид сбоку для UICollectionView сбоку вместо верхнего или нижнего колонтитула? - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь создать настройку, в которой у меня есть UICollectionView с заголовком вверху, а затем еще одно дополнительное представление сбоку. Я не могу просто разместить дополнительное представление вне collectionView, потому что оно разделяет пространство с ячейками collectionView внутри collectionView, и я также хочу, чтобы он прокручивался вместе с ним. Вот как это должно выглядеть:

enter image description here

Я думал, и одно решение, которое я могу придумать, - это создание большого collectionView с дополнительной стороной представление и представление справа в виде ячеек, с заголовком в качестве его заголовка. Однако я слышал, что нехорошо помещать collectionView внутри collectionView, особенно если направления прокрутки одинаковы, и я также хочу динамически загружать больше ячеек по мере прокрутки, поэтому в этом случае мне придется динамически сохранять изменение размера ячейки.

Возможна ли такая элегантная конфигурация? Спасибо!

1 Ответ

1 голос
/ 27 мая 2020

Это возможно. Существует простой способ установить Frame из Дополнительный вид и добавить UIEdgeInsets слева от SectionInset .

Код, как показано ниже:

flowLayout = new UICollectionViewFlowLayout (){
    HeaderReferenceSize = new CGSize(50, 50),
    SectionInset = new UIEdgeInsets (20,65,20,20),
    ScrollDirection = UICollectionViewScrollDirection.Vertical,
    MinimumInteritemSpacing = 10, // minimum spacing between cells
    MinimumLineSpacing = 10 // minimum spacing between rows if ScrollDirection is Vertical or between columns if Horizontal
};

Пользовательский UICollectionReusableView класс:

public class Header : UICollectionReusableView
{
    UILabel label;

    public string Text {
        get {
            return label.Text;
        }
        set {
            label.Text = value;
            SetNeedsDisplay ();
        }
    }

    [Export ("initWithFrame:")]
    public Header (CGRect frame) : base (frame)
    {
        BackgroundColor = UIColor.Red;
        label = new UILabel (){Frame = new CGRect (0,80,50,500), BackgroundColor = UIColor.Yellow};
        label.Lines = 5;
        AddSubview(label);
    }
}

Эффект:

enter image description here

Выше код на основе этого официального образца для изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...