Beispiel #1
0
        public override void PrepareLayout()
        {
            base.PrepareLayout();
            calculatedAttributes.Clear();

            contentWidth = CollectionView.Frame.Width;
            nfloat columnWidth = contentWidth / NumberOfColumns;
            nfloat height      = columnWidth * 1.25f; // Our cells height is a 25% greater than their width

            for (int i = 0; i < columnsXOffset.Length; i++)
            {
                columnsXOffset[i] = i * columnWidth;
            }

            for (int i = 0; i < columnsYOffset.Length; i++)
            {
                columnsYOffset[i] = 0;
            }

            UICollectionViewLayoutAttributes attribute1 = UICollectionViewLayoutAttributes.CreateForCell(NSIndexPath.FromItemSection(0, 0));

            attribute1.Frame = new CGRect(columnsXOffset[1], 0, columnWidth, buttonHeight);
            calculatedAttributes.Add(attribute1);

            columnsYOffset[1] = buttonHeight; // Second column has a vertical offset (due to sell button height)

            int column = 0;

            for (int i = 0; i < CollectionView.NumberOfItemsInSection(1); i++)
            {
                var indexPath  = NSIndexPath.FromItemSection(i, 1);
                var frame      = new CGRect(columnsXOffset[column], columnsYOffset[column], columnWidth, height);
                var insetFrame = RectangleFExtensions.Inset(frame, 0f, 0f);

                UICollectionViewLayoutAttributes attribute = UICollectionViewLayoutAttributes.CreateForCell(indexPath);
                attribute.Frame = insetFrame;

                calculatedAttributes.Add(attribute);

                contentHeight          = System.NMath.Max(contentHeight, RectangleFExtensions.GetMaxY(frame));
                columnsYOffset[column] = columnsYOffset[column] + height;

                column = column >= (NumberOfColumns - 1) ? 0 : ++column;
            }
        }