コード例 #1
0
ファイル: ListView.cs プロジェクト: mengtest/zhengnan
        private void updateContentSize()
        {
            if (!AutoContentSize)
            {
                return;
            }

            if (_listItems.Count == 0)
            {
                return;
            }

            var content     = GetComponent <ScrollRect>().content;
            var allItemSize = getAllSizeItem();

            float   widthNew  = content.rect.width;
            float   heightNew = content.rect.height;
            Vector3 pivotNew  = Vector3.zero;

            switch (ScrollDirection)
            {
            case Direction.left_to_right:
            {
                widthNew  = allItemSize.x + FirstItemOffset.x;
                heightNew = getMaxHeightItem();
                pivotNew  = Pivot.LeftBottom;
                break;
            }

            case Direction.right_to_left:
            {
                widthNew  = allItemSize.x + FirstItemOffset.x;
                heightNew = getMaxHeightItem();
                pivotNew  = Pivot.RightBottom;
                break;
            }

            case Direction.down_to_top:
            {
                widthNew  = getMaxWidthItem();
                heightNew = allItemSize.y + FirstItemOffset.y;
                pivotNew  = Pivot.LeftBottom;
                break;
            }

            case Direction.top_to_down:
            {
                widthNew  = getMaxWidthItem();
                heightNew = allItemSize.y + FirstItemOffset.y;
                pivotNew  = Pivot.LeftTop;
                break;
            }

            default: Debug.LogError("updateContentSize error: unsupport direction !"); break;
            }

            content.sizeDelta = new Vector3(widthNew, heightNew);

            var pos1 = UnityHepler.getWorldPositioByPivot(this.gameObject, pivotNew);

            UnityHepler.setWorldPositionByPivot(content.gameObject, pos1, pivotNew);

            checkCompoment();
        }
コード例 #2
0
ファイル: ListView.cs プロジェクト: mengtest/zhengnan
        private void updateItem(int index)
        {
            if (index < 0 || index > _listItems.Count - 1)
            {
                Debug.LogError("ListView updateItem error: out of range");
                return;
            }
            var           item    = _listItems[index];
            RectTransform content = GetComponent <ScrollRect>().content;

            //calculate position
            Vector3 pivotDecide = Vector3.zero;
            Vector3 pivotAdd    = Vector3.zero;

            switch (ScrollDirection)
            {
            case Direction.left_to_right: pivotDecide = Pivot.LeftBottom; pivotAdd = Pivot.RightBottom; break;

            case Direction.right_to_left: pivotDecide = Pivot.RightBottom; pivotAdd = Pivot.LeftBottom; break;

            case Direction.down_to_top: pivotDecide = Pivot.LeftBottom; pivotAdd = Pivot.LeftTop; break;

            case Direction.top_to_down: pivotDecide = Pivot.LeftTop; pivotAdd = Pivot.LeftBottom; break;

            default: Debug.LogError("unsupport direction"); break;
            }

            if (index == 0)
            {
                if (ScrollDirection == Direction.right_to_left)
                {
                    UnityHepler.setLocalPositionByPivot(item.current, new Vector3(content.rect.width, 0), pivotDecide);
                }
                else if (ScrollDirection == Direction.top_to_down)
                {
                    UnityHepler.setLocalPositionByPivot(item.current, new Vector3(0, content.rect.height), pivotDecide);
                }
                else
                {
                    UnityHepler.setLocalPositionByPivot(item.current, Vector3.zero, pivotDecide);
                }
                fixedLocalPositionByContent(item.current);
            }
            else
            {
                //first item of group
                if (index % EachOfGroup == 0)
                {
                    var     prevItem     = getItem((index / EachOfGroup - 1) * EachOfGroup);
                    Vector3 prevPosition = UnityHepler.getLocalPositioByPivot(prevItem, pivotAdd);
                    UnityHepler.setLocalPositionByPivot(item.current, prevPosition, pivotDecide);

                    fixedItemMargin(item.current, ItemMargin);
                }
                else
                {
                    //next item of group
                    Vector3 prevPosition = UnityHepler.getLocalPositioByPivot(item.prev.current, _currentGroupItemPivotPrev);
                    UnityHepler.setLocalPositionByPivot(item.current, prevPosition, _currentGroupItemPivotNext);

                    fixedItemMargin(item.current, GroupItemMargin);
                }
            }
        }