private void CalculatOffset(LegoScrollViewMeta svMeta) { switch (Arrangement) { case YuArrangement.Horizontal: break; case YuArrangement.Vertical: xOffset = svMeta.Xoffset; break; default: throw new ArgumentOutOfRangeException(); } }
public static LegoScrollViewMeta Create(YuLegoScrollView legoScrollView) { var scHelper = legoScrollView.GetComponent <YuLegoScrollViewHelper>(); if (scHelper == null) { throw new Exception($"滚动视图{legoScrollView.Name}上没有发现滚动视图开发助手组件!"); } var meta = new LegoScrollViewMeta { Id = legoScrollView.Name, Arrangement = legoScrollView.Arrangement, ItemWidth = scHelper.IitemWidth, ItemHeight = scHelper.ItemHeight, IsHorizontal = scHelper.IsHorizontal, HorizontalEnable = scHelper.HorizontalEnable, VerticalEnable = scHelper.VerticalEnable, IsMultiLayout = scHelper.IsMulti, MaxPerLine = scHelper.MaxPerLine, Xoffset = scHelper.Xoffset, IsNotInitSonComponent = scHelper.IsNotInitSonComponent, HorizontalPadiding = scHelper.Horizontalpadiding, VerticalPadiding = scHelper.VerticalPadiding, ScrollViewImageMeta = LegoImageMeta .Create(legoScrollView.RectTransform.GetComponent <YuLegoImage>()) }; var scrollRect = legoScrollView.RectTransform.Find("ScrollRect").RectTransform(); meta.ScrollRectRectMeta = LegoRectTransformMeta.Create(scrollRect); meta.ScrollRectImageMeta = LegoImageMeta.Create(scrollRect.GetComponent <YuLegoImage>()); var content = scrollRect.Find("Content").RectTransform(); meta.ContentRectMeta = LegoRectTransformMeta.Create(content); return(meta); }
public void Metamorphose(LegoUIMeta uiMeta) { if (MetamorphoseStage == LegoMetamorphoseStage.Completed) { MetamorphoseStage = LegoMetamorphoseStage.Metamorphosing; } if (scrollViewMeta == null) { scrollViewMeta = uiMeta.NextScrollView; RectMeta = uiMeta.CurrentRect; } switch (metamorphoseStatus) { case MetamorphoseStatus.ScrollView: YuLegoUtility.MetamorphoseRect(RectTransform, RectMeta); ScrollViewImage.Metamorphose(scrollViewMeta.ScrollViewImageMeta); metamorphoseStatus = MetamorphoseStatus.ScrollRect; break; case MetamorphoseStatus.ScrollRect: YuLegoUtility.MetamorphoseRect(ScrollRectRect, scrollViewMeta.ScrollRectRectMeta); ScrollRectImage.Metamorphose(scrollViewMeta.ScrollRectImageMeta); metamorphoseStatus = MetamorphoseStatus.Content; break; case MetamorphoseStatus.Content: YuLegoUtility.MetamorphoseRect(Content, scrollViewMeta.ContentRectMeta); scrollViewMeta = null; metamorphoseStatus = MetamorphoseStatus.ScrollView; MetamorphoseStage = LegoMetamorphoseStage.Completed; break; default: throw new ArgumentOutOfRangeException(); } }
private void InitMetaInfo(LegoScrollViewMeta svMeta) { isMultiLayout = svMeta.IsMultiLayout; maxPerLine = svMeta.MaxPerLine; Arrangement = svMeta.IsHorizontal ? YuArrangement.Horizontal : YuArrangement.Vertical; itemWidth = svMeta.ItemWidth; itemHeight = svMeta.ItemHeight; horizontalPadiding = svMeta.HorizontalPadiding; verticalPadiding = svMeta.VerticalPadiding; switch (Arrangement) { case YuArrangement.Horizontal: loopRequireNum = isMultiLayout ? ((int)(ScrollRectRect.sizeDelta.x / (itemWidth + horizontalPadiding)) + 2) * maxPerLine : ((int)(ScrollRectRect.sizeDelta.x / (itemWidth + horizontalPadiding)) + 2); break; case YuArrangement.Vertical: minVisibleLine = (int)(Content.sizeDelta.y / (itemHeight + verticalPadiding)); var minLine = minVisibleLine + 2; loopRequireNum = minLine * maxPerLine; break; default: throw new ArgumentOutOfRangeException(); } CalculatOffset(svMeta); isCalculated = true; }
private void AddScrollViewMeta(Transform transform) { var scrollViewMeta = LegoScrollViewMeta.Create(transform.GetComponent <YuLegoScrollView>()); ScrollViewMetas.Add(scrollViewMeta); }