Пример #1
0
        public void updateNodesPosition()
        {
            if (_expandableNodeList.Count == 0)
            {
                return;
            }

            float allNodesHeight = 0.0f;
            int   nodeLen        = _expandableNodeList.Count;

            for (int i = 0; i < nodeLen; i++)
            {
                LExpandNode node = _expandableNodeList[i];
                allNodesHeight += node.gameObject.GetComponent <RectTransform>().rect.height;

                if (node.isExpanded())
                {
                    List <GameObject> nodeItems = node.getExpandableNodeItemList();
                    if (nodeItems.Count > 0)
                    {
                        foreach (GameObject obj in nodeItems)
                        {
                            obj.SetActive(true);
                            allNodesHeight += obj.GetComponent <RectTransform>().rect.height;
                        }
                    }
                }
                else
                {
                    List <GameObject> nodeItems = node.getExpandableNodeItemList();
                    if (nodeItems.Count > 0)
                    {
                        foreach (GameObject obj in nodeItems)
                        {
                            obj.SetActive(false);
                        }
                    }
                }
            }

            Rect rect = GetComponent <RectTransform>().rect;

            allNodesHeight = Mathf.Max(allNodesHeight, rect.height);
            setContainerSize(new Vector2(rect.width, allNodesHeight));

            for (int i = 0; i < nodeLen; i++)
            {
                LExpandNode   node  = _expandableNodeList[i];
                RectTransform rtran = node.gameObject.GetComponent <RectTransform>();
                allNodesHeight = allNodesHeight - rtran.rect.height;

                rtran.pivot     = Vector2.zero;
                rtran.anchorMax = new Vector2(0, 0);
                rtran.anchorMin = new Vector2(0, 0);
                node.transform.SetParent(container.transform);
                node.transform.localPosition = new Vector2(0, allNodesHeight);
                node.transform.localScale    = new Vector3(1, 1, 1);

                if (node.isExpanded())
                {
                    List <GameObject> itemLists = node.getExpandableNodeItemList();
                    for (int j = 0; j < itemLists.Count; j++)
                    {
                        RectTransform _rtran = itemLists[j].GetComponent <RectTransform>();
                        allNodesHeight = allNodesHeight - _rtran.rect.height;

                        _rtran.pivot     = Vector2.zero;
                        _rtran.anchorMax = new Vector2(0, 0);
                        _rtran.anchorMin = new Vector2(0, 0);
                        itemLists[j].transform.SetParent(container.transform);
                        itemLists[j].transform.localPosition = new Vector2(0, allNodesHeight);
                        itemLists[j].transform.localScale    = new Vector3(1, 1, 1);
                    }
                }
            }
        }