Esempio n. 1
0
    /// <summary>
    /// 重置Scroll,
    /// </summary>
    /// <param name="ids"></param>
    /// <param name="pre"></param>
    public void ResetScroll(List <int> ids, ExtraScrollItem pre, UnityEngine.Object manager = null)
    {
        Clear();
        if (pre == null)
        {
            return;
        }
        if (viewRect.rect == Rect.zero)
        {
            Debug.LogError("viewRect为0:如果使用了Auto Hide And Expand ViewPort,请用Auto Hide加调整滑条位置代替");
            return;
        }

        m_manager            = manager;
        m_itemPre            = pre;
        m_itemPre.rect.pivot = new Vector2(0.5f, 0.5f);
        if (m_assignItemSize != Vector2.zero)
        {
            m_itemPre.rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, m_assignItemSize.x);
            m_itemPre.rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, m_assignItemSize.y);
        }

        m_itemIds      = ids;//new List<int>(ids);
        m_itemSize     = m_itemPre.rect.rect.size;
        m_viewportSize = viewRect.rect.size;

        m_isValid = true;
        resetContentSize();
        createCacheItems();
        UpdateView();
    }
Esempio n. 2
0
    void createCacheItems()
    {
        if (m_cacheitems.Count != 0 || m_itemSize.y == 0 || m_itemSize.x == 0)
        {
            Debug.LogError("Scrollview:初始item失败,可能size为0,或存在未清除缓存");
            return;
        }
        int needNum = -2;

        if (m_layoutDirection == LayoutDirection.Horizontal)
        {
            needNum = Mathf.CeilToInt(m_viewportSize.x / (m_itemSize.x + m_layout.spacing));
        }
        else if (m_layoutDirection == LayoutDirection.Vertical)
        {
            needNum = Mathf.CeilToInt(m_viewportSize.y / (m_itemSize.y + m_layout.spacing));
        }


        needNum = Mathf.Max(m_cacheNum, needNum + 2);
        for (int i = 0; i < needNum; i++)
        {
            ExtraScrollItem item = GameObject.Instantiate <ExtraScrollItem>(m_itemPre, content.transform, false);
            item.SetManager(m_manager);
            m_cacheitems.Add(item);
            item.gameObject.SetActive(false);
        }
    }
Esempio n. 3
0
 void showItems()
 {
     for (int i = 0; i < m_curContentRange.count; ++i)
     {
         int             idx = m_curContentRange.minIndex + i;
         ExtraScrollItem it  = m_cacheitems[i];
         it.Reset(m_itemIds[idx]);
         it.rect.localPosition = getPosAtIndex(idx);
         it.gameObject.SetActive(true);
     }
     for (int i = m_curContentRange.count; i < m_cacheitems.Count; ++i)
     {
         ExtraScrollItem it = m_cacheitems[i];
         it.gameObject.SetActive(false);
     }
 }
Esempio n. 4
0
    /// <summary>
    /// 清空所以数据和view
    /// </summary>
    public void Clear()
    {
        m_itemPre         = null;
        m_itemSize        = Vector2.zero;
        m_curContentRange = IndexRange.NullRange;
        m_itemIds.Clear();
        foreach (ExtraScrollItem item in m_cacheitems)
        {
            GameObject.Destroy(item.gameObject);
        }

        m_cacheitems.Clear();
        content.transform.localPosition = Vector2.zero;
        m_manager = null;
        m_isValid = false;
    }