/// <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 循环 } }