是否可以在侧面为UICollectionView创建补充侧视图,而不是作为页眉或页脚?

问题描述 投票:0回答:1

我正在尝试创建一个安装程序,其中我的UICollectionView的顶部是标题,然后是侧面的另一个补充视图。我不能只是将补充视图放置在collectionView之外,因为它与collectionView内部的collectionView单元共享空间,并且我也希望它随其滚动。它的外观如下:

enter image description here

我一直在思考,我能想到的一种解决方案是制作一个大collectionView,以补充侧视图和右侧视图作为它的单元格,并以标头作为其标头。但是,我听说将collectionView放在collectionView内不是很好,特别是如果滚动方向相同,并且我还想在滚动时动态加载更多单元格,因此在这种情况下,我必须动态保持调整单元格的大小。

这种配置是否可以优雅地出现?谢谢!

swift xamarin ipad xamarin.ios uicollectionview
1个回答
0
投票

可以实现。有一种简单的方法可以设置补充视图Frame并在SectionInset的左侧添加UIEdgeInsets

代码如下:

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

以上基于this official sample的代码进行修改。

© www.soinside.com 2019 - 2024. All rights reserved.