using System; using UIKit; namespace Shared { //AVFoundation CoreGraphics UIKit CoreMedia AudioToolbox VideoToolbox GLKit OpenAL MobileCoreServices SystemConfiguration CoreTelephony AVFoundation WebKit /// /// UI处理类 /// public static class Application { //public static double PhoneType //{ // get // { // var type = UIDevice.CurrentDevice.SystemVersion.Split(new string[] { "." }, StringSplitOptions.None)[0]; // var d = 1.0d; // double.TryParse(type, out d); // return d; // } //} public enum GpsUseMode { Always, WhenInUse } public static bool IsGpsEnable = true; public static GpsUseMode CurrentGpsUseMode = GpsUseMode.WhenInUse; //2019-08-14 修改 public static double PhoneType { get { var device = Xamarin.Essentials.DeviceInfo.Model; if (device == null) { return 1.0; } var type = device.Replace("iPhone", "").Split(',')[0]; double d = 1.0; double.TryParse(type, out d); return d; } } //public static String PhoneTypeModel //{ // get // { // var device = UIDevice.CurrentDevice.Model;// .SystemVersion.Split(new string[] { "." }, StringSplitOptions.None)[0]; // return device; // } //} /// /// 获取实际的高度 /// /// The real height. /// Height. public static int GetRealHeight(int height) { return (int)(height / HeightScale); } /// /// 默认的字体大小 /// public static int FontSize = 18; /// /// 获取实际的宽度 /// /// The real width. /// Width. public static int GetRealWidth(int width) { return (int)(width / WidthScale); } /// /// 隐藏软键盘 /// public static void HideSoftInput() { if (Shared.EditText.Instance != null) { Shared.EditText.Instance.Foucs = false; } } /// /// 当前设备类型 /// public static readonly Device DeviceType = Device.Ios; /// /// 获取最小比例的实际值 /// /// The minimum real. /// Width or height. public static int GetMinReal(int widthOrHeight) { return (int)(widthOrHeight / MinScale); } /// /// 获取平均实际值 /// /// The minimum real average. /// Width or height. public static int GetMinRealAverage(int widthOrHeight) { return (int)(widthOrHeight / AverageScale); } /// /// 主线程执行指定事件 /// /// Action. public static void RunOnMainThread(Action action) { if (System.Threading.Thread.CurrentThread.ManagedThreadId == mainThreadId) { action(); } else { RootFrameLayout.InvokeOnMainThread(action); } } public static bool IsWifi { get { return MyReachability.InternetConnectionStatus() == MyNetworkStatus.ReachableViaWiFiNetwork; } } /// /// 当前设备的宽度 /// public static int CurrentWidth; /// /// 当前设备的高度 /// public static int CurrentHeight; /// /// 宽度比例 /// /// The width scale. public static float WidthScale { get { return DesignWidth * 1.0f / CurrentWidth; } } /// /// 高度比例 /// /// The height scale. public static float HeightScale { get { //return Application.CurrentHeight / bigsize; return DesignHeight * 1.0f / CurrentHeight; } } /// /// 最小比例 /// /// The minimum scale. public static float MinScale { get { return WidthScale < HeightScale ? WidthScale : HeightScale; } } /// /// 平均比例 /// /// The average scale. public static float AverageScale { get { return (WidthScale + HeightScale)/2; } } /// /// 设计宽度 /// public static int DesignWidth=1920; /// /// 设计高度 /// public static int DesignHeight=1136; // CoreGraphics.CGRect screenRect = [[UIScreen mainScreen] bounds]; //CoreGraphics.CGSize screenSize = screenRect.size; /// /// 当前主页 /// /// The main page. public static Shared.FrameLayout MainPage { get; private set; } static int mainThreadId; static UIView rootFrameLayout; /// /// 根容器视图 /// /// The root frame layout. public static UIView RootFrameLayout { get { return rootFrameLayout; } set { mainThreadId = System.Threading.Thread.CurrentThread.ManagedThreadId; rootFrameLayout = value; CurrentWidth = (int)value.Frame.Width; Console.WriteLine ("3========" + CurrentWidth); CurrentHeight = (int)value.Frame.Height; MainPage = new FrameLayout(value) { Width = (int)value.Frame.Width, Height = (int)value.Frame.Height, Parent = new RootView() { Width = (int)value.Frame.Width, Height = (int)value.Frame.Height } }; MainPage.Refresh(); } } /// /// 数据文件根目录 /// /// The root path. public static string RootPath=System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)+"/"; /// /// 图片的根目录 /// /// The root path image. public static string RootPathImage { get { return RootPath + "Phone/"; } } /// /// 是否是pad /// public static bool IsPad { get { return false; //return UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad; } } /// /// 皮肤,null时表示用默认的 /// public static string Skin; /// /// GPS位置变化事件 /// public static Action LocationAction; //获取当前屏幕显示的viewcontroller public static UIViewController currentVC { get { var rootViewController = UIApplication.SharedApplication.KeyWindow.RootViewController; var currentVC = getCurrentVCFrom(rootViewController); return currentVC; } } static UIViewController getCurrentVCFrom(UIViewController rootVC) { UIViewController currentVC; if (rootVC.PresentedViewController != null) { // 视图是被presented出来的 rootVC = rootVC.PresentedViewController; } if (rootVC.GetType() == typeof(UITabBarController)) { // 根视图为UITabBarController currentVC = getCurrentVCFrom((rootVC as UITabBarController).SelectedViewController); } else if (rootVC.GetType() == typeof(UINavigationController)) { // 根视图为UINavigationController currentVC = getCurrentVCFrom((rootVC as UINavigationController).VisibleViewController); } else { // 根视图为非导航类 currentVC = rootVC; } return currentVC; } } }