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/HorizontalScrolViewLayout.cs |  219 +++++++++++++++++++++++++++++++++---------------------
 1 files changed, 134 insertions(+), 85 deletions(-)

diff --git a/Shared.IOS/UI/HorizontalScrolViewLayout.cs b/Shared.IOS/UI/HorizontalScrolViewLayout.cs
index 031003a..6e6926c 100644
--- a/Shared.IOS/UI/HorizontalScrolViewLayout.cs
+++ b/Shared.IOS/UI/HorizontalScrolViewLayout.cs
@@ -2,21 +2,22 @@
 using UIKit;
 using Shared.IO;
 using Foundation;
+using CoreGraphics;
 
 namespace Shared
 {
-	/// <summary>
-	/// 浣嶇疆甯冨眬
-	/// </summary>
-	public  class HorizontalScrolViewLayout:ViewGroup
-	{
-		/// <summary>
-		/// 鏋勯�犲嚱鏁�
-		/// </summary>
-		public HorizontalScrolViewLayout()
-		{   			
-			viewGroup = new MyHorizontalScrolViewLayout(this) { };
-			realViewGroup = viewGroup;
+    /// <summary>
+    /// 浣嶇疆甯冨眬
+    /// </summary>
+    public class HorizontalScrolViewLayout : ViewGroup
+    {
+        /// <summary>
+        /// 鏋勯�犲嚱鏁�
+        /// </summary>
+        public HorizontalScrolViewLayout()
+        {
+            viewGroup = new MyHorizontalScrolViewLayout(this) { };
+            realViewGroup = viewGroup;
             HorizontalScrollBarEnabled = false;
         }
 
@@ -83,88 +84,88 @@
         /// <returns>The chidren.</returns>
         /// <param name="view">View.</param>
         public override void AddChidren(View view)
-		{
-			base.AddChidren(view);
-			ReLocation();
-		}
+        {
+            base.AddChidren(view);
+            ReLocation();
+        }
 
-		/// <summary>
-		/// 閲嶆柊鎺掍綅缃強璁惧鍐呭澶у皬
-		/// </summary>
-		public virtual void ReLocation()
-		{
-			if (0 == viewList.Count)
-			{
-				return;
-			}
-			for (int i = 1; i < viewList.Count; i++)
-			{
-				var frame = viewList[i].RealView.Frame;
-				frame.X = viewList[i - 1].RealView.Frame.Right;
-				viewList[i].RealView.Frame = frame;
-			}
+        /// <summary>
+        /// 閲嶆柊鎺掍綅缃強璁惧鍐呭澶у皬
+        /// </summary>
+        public virtual void ReLocation()
+        {
+            if (0 == viewList.Count)
+            {
+                return;
+            }
+            for (int i = 1; i < viewList.Count; i++)
+            {
+                var frame = viewList[i].RealView.Frame;
+                frame.X = viewList[i - 1].RealView.Frame.Right;
+                viewList[i].RealView.Frame = frame;
+            }
 
-			(realViewGroup as MyHorizontalScrolViewLayout).ContentSize = new CoreGraphics.CGSize(viewList[viewList.Count - 1].Right <= Width ? Width + 1 : viewList[viewList.Count - 1].Right,0);
-		}
+            (realViewGroup as MyHorizontalScrolViewLayout).ContentSize = new CoreGraphics.CGSize(viewList[viewList.Count - 1].Right <= Width ? Width + 1 : viewList[viewList.Count - 1].Right, 0);
+        }
 
 
-		/// <summary>
-		/// 绉婚櫎鎵�鏈夌殑瑙嗗浘
-		/// </summary>
-		public override  void RemoveAll()
-		{
-			base.RemoveAll();
-			ReLocation ();
-		}
+        /// <summary>
+        /// 绉婚櫎鎵�鏈夌殑瑙嗗浘
+        /// </summary>
+        public override void RemoveAll()
+        {
+            base.RemoveAll();
+            ReLocation();
+        }
 
-		/// <summary>
-		/// 绉婚櫎鎺т欢
-		/// </summary>
-		/// <param name="view">View.</param>
-		internal override void Remove(View view)
-		{
-			base.Remove(view);
-			ReLocation ();
-		}
+        /// <summary>
+        /// 绉婚櫎鎺т欢
+        /// </summary>
+        /// <param name="view">View.</param>
+        internal override void Remove(View view)
+        {
+            base.Remove(view);
+            ReLocation();
+        }
 
 
-		/// <summary>
-		///  绉婚櫎鎸囧畾绱㈠紩瀵硅薄
-		/// </summary>
-		/// <param name="index">Index.</param>
-		public override void RemoveAt(int index)
-		{
-			base.RemoveAt(index);
-			ReLocation ();
-		}
+        /// <summary>
+        ///  绉婚櫎鎸囧畾绱㈠紩瀵硅薄
+        /// </summary>
+        /// <param name="index">Index.</param>
+        public override void RemoveAt(int index)
+        {
+            base.RemoveAt(index);
+            ReLocation();
+        }
 
-		/// <summary>
-		/// 鏄惁鍏佽婊戝姩
-		/// </summary>
-		/// <value><c>true</c> if scroll enabled; otherwise, <c>false</c>.</value>
-		public bool ScrollEnabled
-		{
-			get
-			{
-				return (viewGroup as MyHorizontalScrolViewLayout).ScrollEnabled;
-			}
-			set
-			{
-				(viewGroup as MyHorizontalScrolViewLayout).ScrollEnabled = value;
-			}
-		}
+        /// <summary>
+        /// 鏄惁鍏佽婊戝姩
+        /// </summary>
+        /// <value><c>true</c> if scroll enabled; otherwise, <c>false</c>.</value>
+        public bool ScrollEnabled
+        {
+            get
+            {
+                return (viewGroup as MyHorizontalScrolViewLayout).ScrollEnabled;
+            }
+            set
+            {
+                (viewGroup as MyHorizontalScrolViewLayout).ScrollEnabled = value;
+            }
+        }
 
-		/// <summary>
-		/// 鏄惁姝e湪婊戝姩
-		/// </summary>
-		/// <value><c>true</c> if decelerating; otherwise, <c>false</c>.</value>
-		public bool Decelerating
-		{
-			get
-			{
-				return (viewGroup as MyHorizontalScrolViewLayout).Decelerating;
-			}
-		}
+        /// <summary>
+        /// 鏄惁姝e湪婊戝姩
+        /// </summary>
+        /// <value><c>true</c> if decelerating; otherwise, <c>false</c>.</value>
+        public bool Decelerating
+        {
+            get
+            {
+                return (viewGroup as MyHorizontalScrolViewLayout).Decelerating;
+            }
+        }
 
         /// <summary>鈥�        /// 鏄惁鏄剧ず姘村钩婊氬姩鏉♀��        /// </summary>
 
@@ -177,6 +178,54 @@
 
             }
         }
+
+        /// <summary>
+        /// 婊戝姩鍒版寚瀹氫綅缃�
+        /// </summary>
+        /// <param name="viewX"></param>
+        public void ScrollToX(int viewX)
+        {
+            //璁$畻鏈�澶у彲浠ユ粴鍔ㄧ殑鍖哄煙
+            var maxX = (realViewGroup as MyHorizontalScrolViewLayout).ContentSize.Width - Width;
+
+            if (viewX > maxX)
+            {
+                viewX = (int)maxX;
+            }
+
+            if (viewX < 0)
+            {
+                viewX = 0;
+            }
+
+            (viewGroup as MyHorizontalScrolViewLayout).SetContentOffset(new CGPoint(viewX, 0), false);
+        }
+
+        /// <summary>
+        /// 婊戝姩鍒版寚瀹歏IEW
+        /// </summary>
+        /// <param name="viewIndex"></param>
+        public void ScrollToViewIndex(int viewIndex)
+        {
+            if (viewList.Count == 0)
+                return;
+            var viewX = this.viewList[viewIndex].X;
+            //璁$畻鏈�澶у彲浠ユ粴鍔ㄧ殑鍖哄煙
+            var maxX = (realViewGroup as MyHorizontalScrolViewLayout).ContentSize.Width - Width;
+
+            if (viewX > maxX)
+            {
+                viewX = (int)maxX;
+            }
+
+            if (viewX < 0)
+            {
+                viewX = 0;
+            }
+
+            (viewGroup as MyHorizontalScrolViewLayout).SetContentOffset(new CGPoint(viewX, 0), false);
+        }
+
     }
 
 

--
Gitblit v1.8.0