using System; using UIKit; using CoreGraphics; using Shared.IO; using Foundation; namespace Shared { /// /// 位置布局,已经全面检查 /// public class VerticalScrolViewLayout : ViewGroup { /// /// 构造函数 /// public VerticalScrolViewLayout() { viewGroup = new MyVerticalScrolViewLayout(this) { }; realViewGroup = viewGroup; } /// /// 垂直方向滚动视图 /// class MyVerticalScrolViewLayout : UIScrollView { [Weak] VerticalScrolViewLayout verticalScrolViewLayout; public MyVerticalScrolViewLayout(VerticalScrolViewLayout verticalScrolViewLayout) { this.verticalScrolViewLayout = verticalScrolViewLayout; Scrolled += (sender, e) => { this.verticalScrolViewLayout?.ScrolledEventHandler?.Invoke(this, new MouseEventArgs { X = (float)(sender as MyVerticalScrolViewLayout).ContentOffset.X, Y = (float)(sender as MyVerticalScrolViewLayout).ContentOffset.Y }); }; } /// /// 点击开始 /// /// Touches. /// Evt. public override void TouchesBegan(NSSet touches, UIEvent evt) { verticalScrolViewLayout?.TouchEvent(EventActions.Down, (touches.AnyObject as UITouch).LocationInView(this)); } /// /// 移动 /// /// Touches. /// Evt. public override void TouchesMoved(NSSet touches, UIEvent evt) { verticalScrolViewLayout?.TouchEvent(EventActions.Move, (touches.AnyObject as UITouch).LocationInView(this)); } /// /// 点击弹起 /// /// Touches. /// Evt. public override void TouchesEnded(NSSet touches, UIEvent evt) { verticalScrolViewLayout?.TouchEvent(EventActions.Up, (touches.AnyObject as UITouch).LocationInView(this)); } public override void TouchesCancelled(NSSet touches, UIEvent evt) { verticalScrolViewLayout?.TouchEvent(EventActions.Cancel, (touches.AnyObject as UITouch).LocationInView(this)); } /// /// 框架默认加了两个UIImageView ,这样可以去掉默认添加 /// /// View. public override void AddSubview(UIView view) { if (view.GetType() == typeof(UIImageView) && view.Tag != int.MinValue) { return; } base.AddSubview(view); } } /// /// 增加控件 /// /// 子控件 public override void AddChidren(View view) { base.AddChidren(view); ReLocation(); } /// /// 重新排位置及设备内容大小 /// public virtual void ReLocation() { if (0 == viewList.Count) { return; } var frame1 = viewList[0].RealView.Frame; frame1.Y = 0; viewList[0].RealView.Frame = frame1; for (int i = 1; i < viewList.Count; i++) { var frame = viewList[i].RealView.Frame; frame.Y = viewList[i - 1].RealView.Frame.Bottom; viewList[i].RealView.Frame = frame; } (realViewGroup as MyVerticalScrolViewLayout).ContentSize = new CoreGraphics.CGSize(0, viewList[viewList.Count - 1].Bottom <= Height ? Height + 1 : viewList[viewList.Count - 1].Bottom); } /// /// 移除所有的视图 /// public override void RemoveAll() { base.RemoveAll(); ReLocation(); } /// /// 移除当前视图 /// /// 当前视图 internal override void Remove(View view) { base.Remove(view); ReLocation(); } /// /// 移除指定索引 /// /// 索引 public override void RemoveAt(int index) { base.RemoveAt(index); ReLocation(); } /// /// 是否允许滑动 /// /// true if scroll enabled; otherwise, false. public bool ScrollEnabled { get { return (viewGroup as MyVerticalScrolViewLayout).ScrollEnabled; } set { (viewGroup as MyVerticalScrolViewLayout).ScrollEnabled = value; } } /// /// 是否正在滑动 /// /// true if decelerating; otherwise, false. public bool Decelerating { get { return (viewGroup as MyVerticalScrolViewLayout).Decelerating; } } /// /// 滑动事件 /// public EventHandler ScrolledEventHandler; /// 
 /// 是否显示垂直滚动条
 /// public bool VerticalScrollBarEnabled { get
 {
 return (viewGroup as MyVerticalScrolViewLayout).ShowsVerticalScrollIndicator;
 } set { (viewGroup as MyVerticalScrolViewLayout).ShowsVerticalScrollIndicator = value; } } } }