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