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); } }
private void Rebuilder() { LayoutRebuilder.ForceRebuildLayoutImmediate(rect); }