using System;
using UIKit;
using Shared.IO;
using Foundation;
namespace Shared
{
///
/// 位置布局
///
public class HorizontalScrolViewLayout:ViewGroup
{
///
/// 构造函数
///
public HorizontalScrolViewLayout()
{
viewGroup = new MyHorizontalScrolViewLayout(this) { };
realViewGroup = viewGroup;
HorizontalScrollBarEnabled = false;
}
///
/// 垂直方向滚动视图
///
class MyHorizontalScrolViewLayout : UIScrollView
{
[Weak] internal HorizontalScrolViewLayout horizontalScrolViewLayout;
public MyHorizontalScrolViewLayout(HorizontalScrolViewLayout horizontalScrolViewLayout)
{
this.horizontalScrolViewLayout = horizontalScrolViewLayout;
}
///
/// 点击开始
///
/// Touches.
/// Evt.
public override void TouchesBegan(NSSet touches, UIEvent evt)
{
horizontalScrolViewLayout?.TouchEvent(EventActions.Down, (touches.AnyObject as UITouch).LocationInView(this));
}
///
/// 移动
///
/// Touches.
/// Evt.
public override void TouchesMoved(NSSet touches, UIEvent evt)
{
horizontalScrolViewLayout?.TouchEvent(EventActions.Move, (touches.AnyObject as UITouch).LocationInView(this));
}
///
/// 点击弹起
///
/// Touches.
/// Evt.
public override void TouchesEnded(NSSet touches, UIEvent evt)
{
horizontalScrolViewLayout?.TouchEvent(EventActions.Up, (touches.AnyObject as UITouch).LocationInView(this));
}
public override void TouchesCancelled(NSSet touches, UIEvent evt)
{
horizontalScrolViewLayout?.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);
}
}
///
/// 增加子视图
///
/// The chidren.
/// View.
public override void AddChidren(View view)
{
base.AddChidren(view);
ReLocation();
}
///
/// 重新排位置及设备内容大小
///
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);
}
///
/// 移除所有的视图
///
public override void RemoveAll()
{
base.RemoveAll();
ReLocation ();
}
///
/// 移除控件
///
/// View.
internal override void Remove(View view)
{
base.Remove(view);
ReLocation ();
}
///
/// 移除指定索引对象
///
/// Index.
public override void RemoveAt(int index)
{
base.RemoveAt(index);
ReLocation ();
}
///
/// 是否允许滑动
///
/// true if scroll enabled; otherwise, false.
public bool ScrollEnabled
{
get
{
return (viewGroup as MyHorizontalScrolViewLayout).ScrollEnabled;
}
set
{
(viewGroup as MyHorizontalScrolViewLayout).ScrollEnabled = value;
}
}
///
/// 是否正在滑动
///
/// true if decelerating; otherwise, false.
public bool Decelerating
{
get
{
return (viewGroup as MyHorizontalScrolViewLayout).Decelerating;
}
}
///
/// 是否显示水平滚动条
///
public bool HorizontalScrollBarEnabled
{
get
{
return (viewGroup as MyHorizontalScrolViewLayout).ShowsHorizontalScrollIndicator;
}
set
{
(viewGroup as MyHorizontalScrolViewLayout).ShowsHorizontalScrollIndicator = value;
}
}
}
}