diff options
Diffstat (limited to 'Xamarin.Forms.Platform.iOS/Forms.cs')
-rw-r--r-- | Xamarin.Forms.Platform.iOS/Forms.cs | 57 |
1 files changed, 44 insertions, 13 deletions
diff --git a/Xamarin.Forms.Platform.iOS/Forms.cs b/Xamarin.Forms.Platform.iOS/Forms.cs index 2c8fc6f7..d6e7e07f 100644 --- a/Xamarin.Forms.Platform.iOS/Forms.cs +++ b/Xamarin.Forms.Platform.iOS/Forms.cs @@ -11,11 +11,18 @@ using System.Security.Cryptography; using System.Text; using System.Threading; using System.Threading.Tasks; -using CoreFoundation; +using Xamarin.Forms.Internals; using Foundation; +#if __MOBILE__ using UIKit; -using Xamarin.Forms.Internals; using Xamarin.Forms.Platform.iOS; +using TNativeView = UIKit.UIView; +#else +using AppKit; +using Xamarin.Forms.Platform.MacOS; +using TNativeView = AppKit.NSView; + +#endif namespace Xamarin.Forms { @@ -24,7 +31,11 @@ namespace Xamarin.Forms //Preserve GetCallingAssembly static readonly bool nevertrue = false; + public static bool IsInitialized { get; private set; } + +#if __MOBILE__ static bool? s_isiOS9OrNewer; +#endif static Forms() { @@ -32,8 +43,7 @@ namespace Xamarin.Forms Assembly.GetCallingAssembly(); } - public static bool IsInitialized { get; private set; } - +#if __MOBILE__ internal static bool IsiOS9OrNewer { get @@ -43,6 +53,7 @@ namespace Xamarin.Forms return s_isiOS9OrNewer.Value; } } +#endif public static void Init() { @@ -53,19 +64,22 @@ namespace Xamarin.Forms Log.Listeners.Add(new DelegateLogListener((c, m) => Trace.WriteLine(m, c))); +#if __MOBILE__ + Device.Idiom = UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad ? TargetIdiom.Tablet : TargetIdiom.Phone; +#else + Device.Idiom = TargetIdiom.Desktop; +#endif Device.PlatformServices = new IOSPlatformServices(); Device.Info = new IOSDeviceInfo(); - Registrar.RegisterAll(new[] { typeof(ExportRendererAttribute), typeof(ExportCellAttribute), typeof(ExportImageSourceHandlerAttribute) }); - - Device.Idiom = UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad ? TargetIdiom.Tablet : TargetIdiom.Phone; - + Registrar.RegisterAll(new[] + { typeof(ExportRendererAttribute), typeof(ExportCellAttribute), typeof(ExportImageSourceHandlerAttribute) }); ExpressionSearch.Default = new iOSExpressionSearch(); } public static event EventHandler<ViewInitializedEventArgs> ViewInitialized; - internal static void SendViewInitialized(this VisualElement self, UIView nativeView) + internal static void SendViewInitialized(this VisualElement self, TNativeView nativeView) { ViewInitialized?.Invoke(self, new ViewInitializedEventArgs { View = self, NativeView = nativeView }); } @@ -99,16 +113,22 @@ namespace Xamarin.Forms internal class IOSDeviceInfo : DeviceInfo { +#if __MOBILE__ readonly NSObject _notification; +#endif readonly Size _scaledScreenSize; readonly double _scalingFactor; public IOSDeviceInfo() { +#if __MOBILE__ _notification = UIDevice.Notifications.ObserveOrientationDidChange((sender, args) => CurrentOrientation = UIDevice.CurrentDevice.Orientation.ToDeviceOrientation()); - _scalingFactor = UIScreen.MainScreen.Scale; _scaledScreenSize = new Size(UIScreen.MainScreen.Bounds.Width, UIScreen.MainScreen.Bounds.Height); +#else + _scalingFactor = NSScreen.MainScreen.BackingScaleFactor; + _scaledScreenSize = new Size(NSScreen.MainScreen.Frame.Width, NSScreen.MainScreen.Frame.Height); +#endif PixelScreenSize = new Size(_scaledScreenSize.Width * _scalingFactor, _scaledScreenSize.Height * _scalingFactor); } @@ -120,7 +140,9 @@ namespace Xamarin.Forms protected override void Dispose(bool disposing) { +#if __MOBILE__ _notification.Dispose(); +#endif base.Dispose(disposing); } } @@ -198,11 +220,19 @@ namespace Xamarin.Forms public bool IsInvokeRequired => !NSThread.IsMain; +#if __MOBILE__ public string RuntimePlatform => Device.iOS; +#else + public string RuntimePlatform => Device.macOS; +#endif public void OpenUriAction(Uri uri) { +#if __MOBILE__ UIApplication.SharedApplication.OpenUrl(new NSUrl(uri.AbsoluteUri)); +#else + NSWorkspace.SharedWorkspace.OpenUrl(new NSUrl(uri.AbsoluteUri)); +#endif } public void StartTimer(TimeSpan interval, Func<bool> callback) @@ -217,11 +247,11 @@ namespace Xamarin.Forms HttpClient GetHttpClient() { - var proxy = CFNetwork.GetSystemProxySettings(); + var proxy = CoreFoundation.CFNetwork.GetSystemProxySettings(); var handler = new HttpClientHandler(); if (!string.IsNullOrEmpty(proxy.HTTPProxy)) { - handler.Proxy = CFNetwork.GetDefaultProxy(); + handler.Proxy = CoreFoundation.CFNetwork.GetDefaultProxy(); handler.UseProxy = true; } return new HttpClient(handler); @@ -272,7 +302,8 @@ namespace Xamarin.Forms public Task<Stream> OpenFileAsync(string path, FileMode mode, FileAccess access, FileShare share) { - Stream stream = _isolatedStorageFile.OpenFile(path, (System.IO.FileMode)mode, (System.IO.FileAccess)access, (System.IO.FileShare)share); + Stream stream = _isolatedStorageFile.OpenFile(path, (System.IO.FileMode)mode, (System.IO.FileAccess)access, + (System.IO.FileShare)share); return Task.FromResult(stream); } } |