protected float GetExpandedHeight()
        {
            if (this.m_LayoutElement == null)
            {
                return(this.m_MinHeight);
            }

            float originalPrefH = this.m_LayoutElement.preferredHeight;

            this.m_LayoutElement.preferredHeight = -1f;
            //The RectTransform's sizeDelta is updated at the second frame by default.If you don't force it to update,you'll get (0,0) at the first frame(On the Start)
            LayoutRebuilder.ForceRebuildLayoutImmediate(this.m_RectTransform);
            float h = LayoutUtility.GetPreferredHeight(this.m_RectTransform);

            this.m_LayoutElement.preferredHeight = originalPrefH;

            return(h);
        }
        public virtual void SetLayoutHorizontal()
        {
            Rect rect;

            this.m_Tracker.Clear();
            if (this.m_HSliderExpand || this.m_VSliderExpand)
            {
                this.m_Tracker.Add(this, this.viewRect, DrivenTransformProperties.AnchoredPositionX | DrivenTransformProperties.AnchoredPositionY | DrivenTransformProperties.AnchorMinX | DrivenTransformProperties.AnchorMinY | DrivenTransformProperties.AnchorMaxX | DrivenTransformProperties.AnchorMaxY | DrivenTransformProperties.SizeDeltaX | DrivenTransformProperties.SizeDeltaY | DrivenTransformProperties.AnchoredPosition | DrivenTransformProperties.AnchorMin | DrivenTransformProperties.AnchorMax | DrivenTransformProperties.Anchors | DrivenTransformProperties.SizeDelta);
                this.viewRect.anchorMin        = Vector2.zero;
                this.viewRect.anchorMax        = Vector2.one;
                this.viewRect.sizeDelta        = Vector2.zero;
                this.viewRect.anchoredPosition = Vector2.zero;
                LayoutRebuilder.ForceRebuildLayoutImmediate(this.content);
                rect = this.viewRect.rect;
                Vector3 vector3 = rect.center;
                rect = this.viewRect.rect;
                this.m_ViewBounds    = new Bounds(vector3, rect.size);
                this.m_ContentBounds = this.GetBounds();
            }
            if (this.m_VSliderExpand && this.vScrollingNeeded)
            {
                this.viewRect.sizeDelta = new Vector2(-(this.m_VSliderWidth + this.m_VerticalScrollbarSpacing), this.viewRect.sizeDelta.y);
                LayoutRebuilder.ForceRebuildLayoutImmediate(this.content);
                rect = this.viewRect.rect;
                Vector3 vector31 = rect.center;
                rect = this.viewRect.rect;
                this.m_ViewBounds    = new Bounds(vector31, rect.size);
                this.m_ContentBounds = this.GetBounds();
            }
            if (this.m_HSliderExpand && this.hScrollingNeeded)
            {
                this.viewRect.sizeDelta = new Vector2(this.viewRect.sizeDelta.x, -(this.m_HSliderHeight + this.m_HorizontalScrollbarSpacing));
                rect = this.viewRect.rect;
                Vector3 vector32 = rect.center;
                rect = this.viewRect.rect;
                this.m_ViewBounds    = new Bounds(vector32, rect.size);
                this.m_ContentBounds = this.GetBounds();
            }
            if (this.m_VSliderExpand && this.vScrollingNeeded && this.viewRect.sizeDelta.x == 0f && this.viewRect.sizeDelta.y < 0f)
            {
                this.viewRect.sizeDelta = new Vector2(-(this.m_VSliderWidth + this.m_VerticalScrollbarSpacing), this.viewRect.sizeDelta.y);
            }
        }
예제 #3
0
 private void Rebuilder()
 {
     LayoutRebuilder.ForceRebuildLayoutImmediate(rect);
 }