예제 #1
0
    /// <summary>
    /// 自动调整多出的那个项的位置
    /// </summary>
    protected virtual void AutoSetItemState()
    {
        LoopTime = 0;  //防止While循环条件一直成立导致导致死循环
        RectTransform lastItem  = ContentRectrans.GetChildEX(ContentRectrans.childCount - 1);
        RectTransform firstItem = ContentRectrans.GetChildEX(0);

        if (Direction == LoopViewShowDirection.Up)
        {
            //**检查最后一个项是否可见    如果不可见则移动到顶部
            while (LoopTime < ContentRectrans.childCount && IsItemVisible(lastItem) == false && IsItemVisible(firstItem))
            {
                ScrollUpDirection(lastItem, firstItem);
                firstItem = ContentRectrans.GetChildEX(0);
                lastItem  = ContentRectrans.GetChildEX(ContentRectrans.childCount - 1);
                ++LoopTime;
            }//由于快读滑动时候可能一下子滑出超过多个Item项的距离
        }
        else
        {
            //***检测第一个项是否可见 如果不可见则移动到末尾
            while (LoopTime < ContentRectrans.childCount && IsItemVisible(firstItem) == false && IsItemVisible(lastItem))
            {
                ScrollDownDirection(firstItem, lastItem);
                lastItem  = ContentRectrans.GetChildEX(ContentRectrans.childCount - 1);
                firstItem = ContentRectrans.GetChildEX(0);
                ++LoopTime;
            }
        }
    }
    /// <summary>
    /// 自动调整多出的那个项的位置
    /// </summary>
    protected virtual void AutoSetItemState()
    {
        LoopTime = 0;
        RectTransform lastItem  = ContentRectrans.GetChildEX(ContentRectrans.childCount - 1);
        RectTransform firstItem = ContentRectrans.GetChildEX(0);

        if (Direction == LoopViewShowDirection.Left)
        {
            //***如果第一个项可见且最后一个项不可见 则移动最后一个到第一个
            while (LoopTime < ContentRectrans.childCount && IsItemVisible(firstItem) && IsItemVisible(lastItem) == false)
            {
                ScrollLeftDirection(lastItem, firstItem);
                lastItem  = ContentRectrans.GetChildEX(ContentRectrans.childCount - 1);
                firstItem = ContentRectrans.GetChildEX(0);
                ++LoopTime;
            }
        }
        else
        {
            //**如果最后一个项可见且第一一个项不可见 则移动第一个到最后以个
            while (LoopTime < ContentRectrans.childCount && IsItemVisible(lastItem) && IsItemVisible(firstItem) == false)
            {
                ScrollRightDirection(firstItem, lastItem);
                lastItem  = ContentRectrans.GetChildEX(ContentRectrans.childCount - 1);
                firstItem = ContentRectrans.GetChildEX(0);
                ++LoopTime;
            }//由于快读滑动时候可能一下子滑出超过多个Item项的距离 所以这里是一个while 循环
        }
    }