Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-如何使用图像实现简单的网格_Ios_Xamarin_Uiviewcontroller_Xamarin.ios_Uicollectionview - Fatal编程技术网

iOS-如何使用图像实现简单的网格

iOS-如何使用图像实现简单的网格,ios,xamarin,uiviewcontroller,xamarin.ios,uicollectionview,Ios,Xamarin,Uiviewcontroller,Xamarin.ios,Uicollectionview,我需要实现一个UIViewController,里面有一个网格,其中包含动态列和动态行。我正在编辑示例,但它是一个带有图像的圆圈 我假设我必须编辑以下文件: using System; using System.Collections.Generic; using CoreGraphics; using Foundation; using CoreAnimation; using UIKit; namespace SimpleCollectionView { public class Circ

我需要实现一个
UIViewController
,里面有一个网格,其中包含动态列和动态行。我正在编辑示例,但它是一个带有图像的圆圈

我假设我必须编辑以下文件:

using System;
using System.Collections.Generic;
using CoreGraphics;
using Foundation;
using CoreAnimation;
using UIKit;

namespace SimpleCollectionView
{
public class CircleLayout : UICollectionViewLayout
{
    const float ItemSize = 70.0f;
    int cellCount = 20;
    float radius;
    CGPoint center;

    static NSString myDecorationViewId = new NSString ("MyDecorationView");

    public CircleLayout ()
    {
        RegisterClassForDecorationView (typeof(MyDecorationView), myDecorationViewId);
    }

    public override void PrepareLayout ()
    {
        base.PrepareLayout ();

        CGSize size = CollectionView.Frame.Size;
        cellCount = (int)CollectionView.NumberOfItemsInSection (0);
        center = new CGPoint (size.Width / 2.0f, size.Height / 2.0f);
        radius = (float)Math.Min (size.Width, size.Height) / 2.5f;
    }

    public override CGSize CollectionViewContentSize {
        get {
            return CollectionView.Frame.Size;
        }
    }

    public override bool ShouldInvalidateLayoutForBoundsChange (CGRect newBounds)
    {
        return true;
    }

    public override UICollectionViewLayoutAttributes LayoutAttributesForItem (NSIndexPath path)
    {
        UICollectionViewLayoutAttributes attributes = UICollectionViewLayoutAttributes.CreateForCell (path);
        attributes.Size = new CGSize (ItemSize, ItemSize);
        attributes.Center = new CGPoint (center.X + radius * (float)Math.Cos (2 * path.Row * Math.PI / cellCount),
                                        center.Y + radius * (float)Math.Sin (2 * path.Row * Math.PI / cellCount));
        return attributes;
    }

    public override UICollectionViewLayoutAttributes[] LayoutAttributesForElementsInRect (CGRect rect)
    {
        var attributes = new UICollectionViewLayoutAttributes [cellCount + 1];

        for (int i = 0; i < cellCount; i++) {
            NSIndexPath indexPath = NSIndexPath.FromItemSection (i, 0);
            attributes [i] = LayoutAttributesForItem (indexPath);
        }

        var decorationAttribs = UICollectionViewLayoutAttributes.CreateForDecorationView (myDecorationViewId, NSIndexPath.FromItemSection (0, 0));
        decorationAttribs.Size = CollectionView.Frame.Size;
        decorationAttribs.Center = CollectionView.Center;
        decorationAttribs.ZIndex = -1;
        attributes [cellCount] = decorationAttribs;

        return attributes;
    }

}

public class MyDecorationView : UICollectionReusableView
{
    [Export ("initWithFrame:")]
    public MyDecorationView (CGRect frame) : base (frame)
    {
        BackgroundColor = UIColor.Red;
    }
}
}
使用系统;
使用System.Collections.Generic;
使用核心图形;
使用基础;
使用CoreAnimation;
使用UIKit;
命名空间SimpleCollectionView
{
公共类圆形布局:UICollectionViewLayout
{
常量浮点ItemSize=70.0f;
int-cellCount=20;
浮动半径;
点中心;
静态NSString myDecorationViewId=新NSString(“MyDecorationView”);
公共环形布局()
{
RegisterClassForDecorationView(typeof(MyDecorationView),myDecorationViewId);
}
公共覆盖无效预处理页()
{
base.PrepareLayout();
CGSize size=CollectionView.Frame.size;
cellCount=(int)CollectionView.NumberOfItemsInSection(0);
中心=新的CGPoint(尺寸.宽度/2.0f,尺寸.高度/2.0f);
半径=(浮动)数学最小值(尺寸.宽度,尺寸.高度)/2.5f;
}
公共覆盖CGSize集合视图内容大小{
得到{
返回CollectionView.Frame.Size;
}
}
公共覆盖布尔应为边界设置验证布局(CGRect新边界)
{
返回true;
}
公共覆盖UICollectionViewLayoutAttribute布局属性ForItem(NSIndexPath路径)
{
UICollectionViewLayoutAttributes attributes=UICollectionViewLayoutAttributes.CreateForCell(路径);
attributes.Size=新的CGSize(ItemSize,ItemSize);
attributes.Center=新的CGPoint(Center.X+radius*(float)Math.Cos(2*path.Row*Math.PI/cellCount),
center.Y+radius*(float)Math.Sin(2*path.Row*Math.PI/cellCount));
返回属性;
}
公共覆盖UICollectionViewLayoutAttributes[]LayoutAttributesForElementsInRect(CGRect rect)
{
var attributes=new UICollectionViewLayoutAttribute[cellCount+1];
对于(int i=0;i
然而,我真的不知道我必须修改什么才能得到一个包含行和列的简单图像网格


我没有找到任何真正的例子,所以也许有人能帮我找到一个有用的例子。

UICollectionViewFlowLayout
不是你要找的吗?
UICollectionViewFlowLayout
不是你要找的吗?