From b8e94316e41eba72d927d5ca7d931b26139ee8ff Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期一, 15 六月 2020 09:12:53 +0800 Subject: [PATCH] 20200612 --- Shared.IOS/UI/RowLayout.cs | 327 +++++++++++++++++++++++++----------------------------- 1 files changed, 152 insertions(+), 175 deletions(-) diff --git a/Shared.IOS/UI/RowLayout.cs b/Shared.IOS/UI/RowLayout.cs index 252761d..558a638 100644 --- a/Shared.IOS/UI/RowLayout.cs +++ b/Shared.IOS/UI/RowLayout.cs @@ -6,127 +6,117 @@ namespace Shared { - /// <summary> - /// 鍦ㄦ粦鍔ㄤ簨浠朵笅锛屽彲鏄剧ず闅愯棌浜涜嚜瀹氫箟瑙嗗浘 - /// </summary> - public class RowLayout : ViewGroup - { - ///// <summary> - ///// OpenLeftMenuAction - ///// </summary> - //public Action OpenLeftMenuAction; - ///// <summary> - ///// OpenRightMenuAction - ///// </summary> - //public Action OpenRightMenuAction; - + /// <summary> + /// 鍦ㄦ粦鍔ㄤ簨浠朵笅锛屽彲鏄剧ず闅愯棌浜涜嚜瀹氫箟瑙嗗浘 + /// </summary> + public class RowLayout : ViewGroup + { /// <summary> /// OpenMenuAction /// </summary> public Action OpenMenuAction; - - + /// <summary> /// 鍙宠竟鐨勮鍥惧垪琛� /// </summary> internal System.Collections.Generic.List<Button> leftView = new System.Collections.Generic.List<Button>(); - /// <summary> - /// 鍙宠竟鐨勮鍥惧垪琛� - /// </summary> - internal System.Collections.Generic.List<Button> rigthView = new System.Collections.Generic.List<Button>(); - /// <summary> - /// 涓嬮潰閭h竟寮� - /// </summary> - UIView lineUIView = new UIView(); + /// <summary> + /// 鍙宠竟鐨勮鍥惧垪琛� + /// </summary> + internal System.Collections.Generic.List<Button> rigthView = new System.Collections.Generic.List<Button>(); + /// <summary> + /// 涓嬮潰閭h竟寮� + /// </summary> + UIView lineUIView = new UIView(); - /// <summary> - /// 閲嶆柊鍒锋柊鎺т欢 - /// </summary> - public override void Refresh() - { - base.Refresh(); - LineColor = lineColor; - } - /// <summary> - /// 鎺т欢瀹藉害 - /// </summary> - public override int Width - { - get - { - return base.Width; - } - set - { - base.Width = value; - if (!IsCanRefresh) - return; + /// <summary> + /// 閲嶆柊鍒锋柊鎺т欢 + /// </summary> + public override void Refresh() + { + base.Refresh(); + LineColor = lineColor; + } + /// <summary> + /// 鎺т欢瀹藉害 + /// </summary> + public override int Width + { + get + { + return base.Width; + } + set + { + base.Width = value; + if (!IsCanRefresh) + return; - var frame4 = lineUIView.Frame; - frame4.Width = base.Width; - lineUIView.Frame = frame4; - } - } + var frame4 = lineUIView.Frame; + frame4.Width = base.Width; + lineUIView.Frame = frame4; + } + } - /// <summary> - /// 瀛愯鍥剧殑瀹藉害 - /// </summary> - public int SubViewWidth = 70; + /// <summary> + /// 瀛愯鍥剧殑瀹藉害 + /// </summary> + public int SubViewWidth = 70; - /// <summary> - /// 鎺т欢鐨勯珮搴� - /// </summary> - /// <value>The height.</value> - public override int Height - { - get - { - return base.Height; - } - set - { - base.Height = value; - if (!IsCanRefresh) - return; + /// <summary> + /// 鎺т欢鐨勯珮搴� + /// </summary> + /// <value>The height.</value> + public override int Height + { + get + { + return base.Height; + } + set + { + base.Height = value; + if (!IsCanRefresh) + return; - { - var frame = realViewGroup.Frame; - frame.Height = Height; - realViewGroup.Frame = frame; - } + { + var frame = realViewGroup.Frame; + frame.Height = Height; + realViewGroup.Frame = frame; + } - var frame4 = lineUIView.Frame; - frame4.Y = base.Height - frame4.Height; - lineUIView.Frame = frame4; - } - } + var frame4 = lineUIView.Frame; + frame4.Y = base.Height - frame4.Height; + lineUIView.Frame = frame4; + } + } - uint lineColor = 0x80818181; - /// <summary> - /// 鑳屾櫙棰滆壊 - /// </summary> - /// <value>The color of the background.</value> - public virtual uint LineColor - { - get - { - return lineColor; - } - set - { - lineColor = value; - if (!IsCanRefresh) - { - return; - } - byte r, g, b, a; - r = (byte)(lineColor / 256 / 256 % 256); - g = (byte)(lineColor / 256 % 256); - b = (byte)(lineColor % 256); - a = (byte)(lineColor / 256 / 256 / 256 % 256); - lineUIView.BackgroundColor = UIKit.UIColor.FromRGBA(r, g, b, a); - } - } + uint lineColor = 0x80818181; + /// <summary> + /// 鑳屾櫙棰滆壊 + /// </summary> + /// <value>The color of the background.</value> + public virtual uint LineColor + { + get + { + return lineColor; + } + set + { + lineColor = value; + if (!IsCanRefresh) + { + return; + } + byte r, g, b, a; + r = (byte)(lineColor / 256 / 256 % 256); + g = (byte)(lineColor / 256 % 256); + b = (byte)(lineColor % 256); + a = (byte)(lineColor / 256 / 256 / 256 % 256); + lineUIView.BackgroundColor = UIKit.UIColor.FromRGBA(r, g, b, a); + } + } /// <summary> /// 鏄惁姝f墦寮� @@ -191,9 +181,9 @@ if (leftView.Count == 0) return; - + IsShowLeft = true; - (viewGroup as UIScrollView).SetContentOffset(new CGPoint(leftView[0].RealView.Frame.X, 0), false); + (viewGroup as UIScrollView).SetContentOffset(new CGPoint(leftView[0].RealView.Frame.X, 0), true); OpenMenuAction?.Invoke(); } @@ -215,7 +205,7 @@ return; IsShowRight = true; var rigthViewX = realViewGroup.Frame.X + GetAllRightViewWidth(); - (viewGroup as UIScrollView).SetContentOffset(new CGPoint(rigthViewX, 0), false); + (viewGroup as UIScrollView).SetContentOffset(new CGPoint(rigthViewX, 0), true); OpenMenuAction?.Invoke(); } @@ -227,8 +217,7 @@ HideAllMenuView(); } - void RestMenuView() - { + void RestMenuView() { if (IsShowRight) { OpenRightMenu(); @@ -238,11 +227,10 @@ OpenLeftMenu(); } - else - { + else { HideAllMenuView(); } - + } void HideAllMenuView() @@ -272,8 +260,7 @@ /// 鑾峰彇褰撳墠leftView鐨勬�诲 /// </summary> /// <returns></returns> - int GetAllLeftViewWidth() - { + int GetAllLeftViewWidth() { int mWidth = 0; foreach (var mView in leftView) { @@ -302,39 +289,34 @@ /// </summary> /// <param name="view">View.</param> public void AddLeftView(Button view) - { - if (null == view) - { - return; - } + { + if (null == view) + { + return; + } var mSubViewWidth = isUseSameSubViewWidth ? SubViewWidth : view.Width; view.X = GetAllLeftViewWidth(); - view.Y = 0; - view.Width = mSubViewWidth; - view.Height = Height; - viewGroup.AddSubview(view.RealView); - view.Parent = this; - view.Refresh(); - leftView.Add(view); - var frame = realViewGroup.Frame; - frame.X += mSubViewWidth; - realViewGroup.Frame = frame; - foreach (var right in rigthView) - { - right.X += mSubViewWidth; - } + view.Y = 0; + view.Width = mSubViewWidth; + view.Height = Height; + viewGroup.AddSubview(view.RealView); + view.Parent = this; + view.Refresh(); + leftView.Add(view); + var frame = realViewGroup.Frame; + frame.X += mSubViewWidth; + realViewGroup.Frame = frame; + foreach (var right in rigthView) + { + right.X += mSubViewWidth; + } RefreshContentSize(); + } - // var menuWidth = GetAllLeftViewWidth() + GetAllRightViewWidth(); - // (viewGroup as UIScrollView).ContentSize = new CoreGraphics.CGSize(menuWidth + realViewGroup.Frame.Width, 0); - //(viewGroup as UIScrollView).SetContentOffset(new CGPoint(realViewGroup.Frame.X, 0), false); - } - - void RefreshContentSize() - { + void RefreshContentSize() { var menuWidth = GetAllLeftViewWidth() + GetAllRightViewWidth(); (viewGroup as UIScrollView).ContentSize = new CoreGraphics.CGSize(menuWidth + realViewGroup.Frame.Width, 0); (viewGroup as UIScrollView).SetContentOffset(new CGPoint(realViewGroup.Frame.X, 0), false); @@ -358,28 +340,24 @@ /// </summary> /// <param name="view">View.</param> public void AddRightView(Button view) - { - if (null == view) - { - return; - } + { + if (null == view) + { + return; + } var mSubViewWidth = isUseSameSubViewWidth ? SubViewWidth : view.Width; - view.X = (int)realViewGroup.Frame.Right + GetAllRightViewWidth(); - view.Y = 0; - view.Width = mSubViewWidth; - view.Height = Height; - viewGroup.AddSubview(view.RealView); - view.Parent = this; - view.Refresh(); - rigthView.Add(view); + view.X =(int)realViewGroup.Frame.Right + GetAllRightViewWidth(); + view.Y = 0; + view.Width = mSubViewWidth; + view.Height = Height; + viewGroup.AddSubview(view.RealView); + view.Parent = this; + view.Refresh(); + rigthView.Add(view); RefreshContentSize(); - - // (viewGroup as UIScrollView).ContentSize = new CoreGraphics.CGSize((leftView.Count + rigthView.Count) * SubViewWidth + realViewGroup.Frame.Width, 0); - //(viewGroup as UIScrollView).SetContentOffset(new CGPoint(realViewGroup.Frame.X, 0), false); - - } + } nfloat beforeXScrollX; nfloat moveX; @@ -387,22 +365,22 @@ /// 鍦ㄦ粦鍔ㄤ簨浠朵笅锛屽彲鏄剧ず闅愯棌浜涜嚜瀹氫箟瑙嗗浘 /// </summary> public RowLayout() - { + { viewGroup = new UIScrollView { Bounces = false }; realViewGroup = new MyRowLayout(this) { }; + + viewGroup.AddSubview(realViewGroup); + viewGroup.Layer.MasksToBounds = true; - viewGroup.AddSubview(realViewGroup); - viewGroup.Layer.MasksToBounds = true; - - lineUIView.BackgroundColor = new UIColor(0x81 / 255.0f, 0x81 / 255.0f, 0x81 / 255.0f, 0.8f); - var lineUIViewFrame = lineUIView.Frame; - lineUIViewFrame.Height = 1.0f; - lineUIView.Frame = lineUIViewFrame; - viewGroup.AddSubview(lineUIView); + lineUIView.BackgroundColor = new UIColor(0x81 / 255.0f, 0x81 / 255.0f, 0x81 / 255.0f, 0.8f); + var lineUIViewFrame = lineUIView.Frame; + lineUIViewFrame.Height = 1.0f; + lineUIView.Frame = lineUIViewFrame; + viewGroup.AddSubview(lineUIView); (viewGroup as UIScrollView).ShowsHorizontalScrollIndicator = false;//闅愯棌姘村钩婊氬姩鏉� - + (viewGroup as UIScrollView).Scrolled += (s, e) => { moveX = (viewGroup as UIScrollView).ContentOffset.X - beforeXScrollX; @@ -413,14 +391,14 @@ beforeXScrollX = (viewGroup as UIScrollView).ContentOffset.X; }; - (viewGroup as UIScrollView).DecelerationStarted += (s, e) => + (viewGroup as UIScrollView). DecelerationStarted += (s, e) => { - + GetMovePageIndex(); }; - + (viewGroup as UIScrollView).DraggingEnded += (s, e) => { @@ -432,8 +410,7 @@ } - void GetMovePageIndex() - { + void GetMovePageIndex(){ if (20 < Math.Abs(moveX)) { -- Gitblit v1.8.0