我正在尝试创建一个安装程序,其中我的UICollectionView的顶部是标题,然后是侧面的另一个补充视图。我不能只是将补充视图放置在collectionView之外,因为它与collectionView内部的collectionView单元共享空间,并且我也希望它随其滚动。它的外观如下:
我一直在思考,我能想到的一种解决方案是制作一个大collectionView,以补充侧视图和右侧视图作为它的单元格,并以标头作为其标头。但是,我听说将collectionView放在collectionView内不是很好,特别是如果滚动方向相同,并且我还想在滚动时动态加载更多单元格,因此在这种情况下,我必须动态保持调整单元格的大小。
这种配置是否可以优雅地出现?谢谢!
可以实现。有一种简单的方法可以设置补充视图的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); } }
效果:
以上基于this official sample的代码进行修改。