From af4101b1d8461331bc3163b738fc75d4bf67c85c Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期二, 28 七月 2020 17:47:44 +0800
Subject: [PATCH] 2020-07-28-1
---
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