由于项目中自己的功能只用到了vertical 而且是单列的 所以目前只有这一种情况可以拿来直接用 由于项目工期较紧后续没有扩展和优化 贴上来为自己以后 或者其他童鞋提供一个思路
话不多说 直接上源码 代码较简单就不上备注了 为了好理解多定义了些变量
GameCore.UIElement 是本项目的ViewElement
public delegate void OnInitializeItem(GameObject go, int wrapIndex, int realIndex, GameCore.UIElement element);
public OnInitializeItem onInitializeItem;
private int dataNum = 0;
public bool hideInactive = false;
public int baseNum = 6; //这6个是需要预先在预设里的
public int paddingY = 20;
protected Transform mTrans;
protected Transform topItem;
protected Transform bottomItem;
protected UIPanel mPanel;
protected UIScrollView mScroll;
protected bool mHorizontal = false;
protected Dictionary<Transform, GameCore.UIElement> mChildren = new Dictionary<Transform, GameCore.UIElement>();
protected Dictionary<Transform, UIWidget> mChildrenWidgets = new Dictionary<Transform, UIWidget>();
private Vector2 inItOffset;
private int maxIndex;
private int minIndex;
private int startIndex;
public void Init()
{
if (!CacheScrollView()) return;
startIndex = 0;
CacheChild();
if (mScroll != null)
mScroll.GetComponent<UIPanel>().onClipMove = OnMove;
}
protected bool CacheScrollView()
{
mTrans = transform;
mPanel = NGUITools.FindInParents<UIPanel>(gameObject);
mScroll = mPanel.GetComponent<UIScrollView>();
//mTable = mTrans.GetComponent<UITable>();
inItOffset = mPanel.clipOffset;
if (mScroll == null) return false;