Skip to content

Instantly share code, notes, and snippets.

@QiMata
Created May 16, 2016 15:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save QiMata/b31a989708070357451d17252c9675c9 to your computer and use it in GitHub Desktop.
Save QiMata/b31a989708070357451d17252c9675c9 to your computer and use it in GitHub Desktop.
[assembly:ExportRenderer(typeof(CustomNavigationPage),typeof(CustomNavigationPageRenderer))]
namespace Common.Controls.iOS
{
public class CustomNavigationPageRenderer : NavigationRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
if (e.OldElement != null)
{
return;
}
e.NewElement.PropertyChanged += NewElement_PropertyChanged;
}
private void NewElement_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName != nameof(SlackNavigationPage.ShowStatusBar))
{
return;
}
var page = (SlackNavigationPage)Element;
UIApplication.SharedApplication.SetStatusBarHidden(!page.ShowStatusBar,UIStatusBarAnimation.Slide);
SetNeedsStatusBarAppearanceUpdate();
}
public override void SetNeedsStatusBarAppearanceUpdate()
{
base.SetNeedsStatusBarAppearanceUpdate();
var viewController = ViewController;
while (viewController?.ParentViewController != null && viewController.ParentViewController.GetType() != typeof(PhoneMasterDetailRenderer))
{
viewController = ViewController.ParentViewController;
}
if (viewController == null || Equals(viewController, ViewController))
{
return;
}
viewController?.SetNeedsStatusBarAppearanceUpdate();
}
public override bool PrefersStatusBarHidden()
{
var page = (SlackNavigationPage)Element;
return !page?.ShowStatusBar ?? base.PrefersStatusBarHidden();
}
public override UIStatusBarAnimation PreferredStatusBarUpdateAnimation => UIStatusBarAnimation.Slide;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment