combine projects into one
This commit is contained in:
97
Gallery.iOS/Renderers/AdaptedPageRenderer.cs
Normal file
97
Gallery.iOS/Renderers/AdaptedPageRenderer.cs
Normal file
@ -0,0 +1,97 @@
|
||||
using Foundation;
|
||||
using Gallery.iOS.Renderers;
|
||||
using Gallery.Resources.UI;
|
||||
using Gallery.Services;
|
||||
using UIKit;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Platform.iOS;
|
||||
|
||||
[assembly: ExportRenderer(typeof(AdaptedPage), typeof(AdaptedPageRenderer))]
|
||||
namespace Gallery.iOS.Renderers
|
||||
{
|
||||
public class AdaptedPageRenderer : PageRenderer
|
||||
{
|
||||
UIDeviceOrientation lastOrientation;
|
||||
NSObject observer;
|
||||
|
||||
public override void ViewDidLoad()
|
||||
{
|
||||
base.ViewDidLoad();
|
||||
|
||||
if (Element is AdaptedPage page)
|
||||
{
|
||||
page.OnLoad();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (Element is AdaptedPage page)
|
||||
{
|
||||
page.OnUnload();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
public override void ViewDidAppear(bool animated)
|
||||
{
|
||||
base.ViewDidAppear(animated);
|
||||
|
||||
var element = Element;
|
||||
if (element != null)
|
||||
{
|
||||
var style = Environment.ConvertStyle(Screen.GetStatusBarStyle(element));
|
||||
Environment.SetStatusBarStyle(style);
|
||||
}
|
||||
|
||||
observer = UIDevice.Notifications.ObserveOrientationDidChange(OnOrientationChanged);
|
||||
OnOrientationChanged(null, null);
|
||||
}
|
||||
|
||||
public override void ViewWillDisappear(bool animated)
|
||||
{
|
||||
if (observer != null)
|
||||
{
|
||||
observer.Dispose();
|
||||
observer = null;
|
||||
}
|
||||
|
||||
base.ViewWillDisappear(animated);
|
||||
}
|
||||
|
||||
private void OnOrientationChanged(object sender, NSNotificationEventArgs e)
|
||||
{
|
||||
var current = UIDevice.CurrentDevice.Orientation;
|
||||
if (current == UIDeviceOrientation.FaceUp || current == UIDeviceOrientation.FaceDown)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (lastOrientation != current)
|
||||
{
|
||||
lastOrientation = current;
|
||||
if (current == UIDeviceOrientation.Portrait && UIApplication.SharedApplication.StatusBarHidden)
|
||||
{
|
||||
var style = Environment.ConvertStyle(Screen.GetStatusBarStyle(Element));
|
||||
if (style != UIStatusBarStyle.BlackOpaque)
|
||||
{
|
||||
UIApplication.SharedApplication.SetStatusBarHidden(false, true);
|
||||
}
|
||||
}
|
||||
if (Element is AdaptedPage page)
|
||||
{
|
||||
AppShell.Current?.SetStatusBarHeight(
|
||||
NavigationController?.NavigationBar.Frame.Height ?? 0,
|
||||
UIApplication.SharedApplication.StatusBarFrame.Height);
|
||||
var landscape =
|
||||
current == UIDeviceOrientation.LandscapeLeft ||
|
||||
current == UIDeviceOrientation.LandscapeRight;
|
||||
if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone)
|
||||
{
|
||||
landscape |= current == UIDeviceOrientation.PortraitUpsideDown;
|
||||
}
|
||||
page.OnOrientationChanged(landscape);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user