using System; using UIKit; using CoreGraphics; namespace Shared { /// /// Loading UI /// public class Loading : View { public bool CurStatus = false; internal IosLoading iosLoading { get { return uiView as IosLoading; } set { uiView = value; } } /// /// Loading UI /// public Loading() { var bounds = UIScreen.MainScreen.Bounds; iosLoading = new IosLoading(bounds); } /// /// 开始当前视图 /// public void Start() { iosLoading.uiLabel.Text = "Loading......"; iosLoading.Start(); CurStatus = true; } /// /// 开始当前视图 /// public void Start(string s) { iosLoading.uiLabel.Text = s; iosLoading.Start(); } /// /// 隐藏当前视图 /// public void Hide() { iosLoading.uiLabel.Text = "Loading......"; iosLoading.Hide(); CurStatus = false; } public string Text { get { return iosLoading.uiLabel.Text; } set { iosLoading.uiLabel.Text = value; } } public virtual uint LodingBackgroundColor { get { return (iosLoading as IosLoading).LodingBackgroundColor; } set { (iosLoading as IosLoading).LodingBackgroundColor = value; } } } internal class IosLoading : UIView { UIActivityIndicatorView activitySpinner= new UIActivityIndicatorView(UIActivityIndicatorViewStyle.WhiteLarge); public UILabel uiLabel=new UILabel(); UIView backUIView = new UIView(new CGRect(0, 0, 160, 100)); public IosLoading(CGRect frame) { Frame = frame; Hidden = true; AutoresizingMask = UIViewAutoresizing.All; var f = backUIView.Frame; f.Width = frame.Width; f.Height = frame.Height; backUIView.Frame = f; var center = backUIView.Center; center.X = Frame.Width / 2; center.Y = Frame.Height / 2; backUIView.Center = center; AddSubview(backUIView); // create the activity spinner, center it horizontall and put it 5 points above center x var center1 = activitySpinner.Center; center1.X = backUIView.Frame.Width / 2; center1.Y = (backUIView.Frame.Height - 22) / 2; activitySpinner.Center = center1; backUIView.AddSubview(activitySpinner); activitySpinner.BackgroundColor = UIColor.Clear; var frame2 = uiLabel.Frame; frame2.Y = activitySpinner.Frame.Bottom+22; frame2.Width = backUIView.Frame.Width; frame2.Height = 22; uiLabel.Frame = frame2; uiLabel.BackgroundColor = UIColor.Clear; uiLabel.TextColor = UIColor.White; uiLabel.TextAlignment = UITextAlignment.Center; backUIView.AddSubview(uiLabel); } public void Start() { if (Superview == null) { return; } BackgroundColor = UIKit.UIColor.FromRGBA(0x32, 0x32, 0x32, 0xF0); Hidden = false; activitySpinner.StartAnimating(); Superview.BringSubviewToFront(this); } /// /// Fades out the control and then removes it from the super view /// public void Hide () { if(Superview==null){ return; } Hidden = true; activitySpinner.StopAnimating (); Superview.SendSubviewToBack(this); } uint loadingBackgroundColor; /// /// 背景颜色 /// /// The color of the background. public virtual uint LodingBackgroundColor { get { return loadingBackgroundColor; } set { loadingBackgroundColor = value; if (this.GetType() != typeof(ImageView)) { byte r, g, b, a; r = (byte)(loadingBackgroundColor / 256 / 256 % 256); g = (byte)(loadingBackgroundColor / 256 % 256); b = (byte)(loadingBackgroundColor % 256); a = (byte)(loadingBackgroundColor / 256 / 256 / 256 % 256); backUIView.BackgroundColor = UIKit.UIColor.FromRGBA(r, g, b, a); backUIView.Layer.MasksToBounds = true; backUIView.Layer.CornerRadius = 6; backUIView.Layer.BorderWidth = 0; } } } } }