原文地址:http://stackoverflow.com/a/16242104
相关讨论:http://forums.xamarin.com/discussion/12103/how-would-you-approach-auto-hide-show-of-tab-bar
NO.1
public void HideTabBar()
{
var screenRect = UIScreen.MainScreen.Bounds;
float fHeight = screenRect.Height;
if(UIApplication.SharedApplication.StatusBarOrientation == UIInterfaceOrientation.LandscapeLeft
|| UIApplication.SharedApplication.StatusBarOrientation == UIInterfaceOrientation.LandscapeRight)
{
fHeight = screenRect.Width;
}
UIView.BeginAnimations(null);
UIView.SetAnimationDuration(0.4);
foreach(UIView view in this.View.Subviews)
{
if(view is UITabBar)
{
view.Frame = new RectangleF(view.Frame.X, fHeight, view.Frame.Width, view.Frame.Height);
}
else
{
view.Frame = new RectangleF(view.Frame.X, view.Frame.Y, view.Frame.Width, fHeight);
view.BackgroundColor = UIColor.Black;
}
}
UIView.CommitAnimations();
}
public void ShowTabBar()
{
var screenRect = UIScreen.MainScreen.Bounds;
float fHeight = screenRect.Height - 49f;
if(UIApplication.SharedApplication.StatusBarOrientation == UIInterfaceOrientation.LandscapeLeft
|| UIApplication.SharedApplication.StatusBarOrientation == UIInterfaceOrientation.LandscapeRight)
{
fHeight = screenRect.Width - 49f;
}
UIView.BeginAnimations(null);
UIView.SetAnimationDuration(0.4);
foreach(UIView view in this.View.Subviews)
{
if(view is UITabBar)
{
view.Frame = new RectangleF(view.Frame.X, fHeight, view.Frame.Width, view.Frame.Height);
}
else
{
view.Frame = new RectangleF(view.Frame.X, view.Frame.Y, view.Frame.Width, fHeight);
}
}
UIView.CommitAnimations();
}
No.2
地址:http://forums.xamarin.com/discussion/20901/hide-tab-bar-on-push
bool _isHidden;
public void HideTabBar()
{
if (_isHidden)
return;
var screenRect = UIScreen.MainScreen.Bounds;
var height = screenRect.Height;
if(UIApplication.SharedApplication.StatusBarOrientation == UIInterfaceOrientation.LandscapeLeft
|| UIApplication.SharedApplication.StatusBarOrientation == UIInterfaceOrientation.LandscapeRight)
{
height = screenRect.Width;
}
UIView.BeginAnimations(null);
UIView.SetAnimationDuration(0.4);
foreach(UIView view in this.View.Subviews)
{
if(view is UITabBar)
view.Frame = new CGRect(view.Frame.X, height, view.Frame.Width, view.Frame.Height);
else
{
view.Frame = new CGRect(view.Frame.X, view.Frame.Y, view.Frame.Width, height);
view.BackgroundColor = UIColor.Black;
}
}
UIView.CommitAnimations();
_isHidden = true;
}
public void ShowTabBar()
{
if (!_isHidden)
return;
var screenRect = UIScreen.MainScreen.Bounds;
var height = screenRect.Height - 49f;
if(UIApplication.SharedApplication.StatusBarOrientation == UIInterfaceOrientation.LandscapeLeft
|| UIApplication.SharedApplication.StatusBarOrientation == UIInterfaceOrientation.LandscapeRight)
{
height = screenRect.Width - 49f;
}
UIView.BeginAnimations(null);
UIView.SetAnimationDuration(0.4);
foreach(UIView view in this.View.Subviews)
{
if(view is UITabBar)
view.Frame = new CGRect(view.Frame.X, height, view.Frame.Width, view.Frame.Height);
else
view.Frame = new CGRect(view.Frame.X, view.Frame.Y, view.Frame.Width, height);
}
UIView.CommitAnimations();
_isHidden = false;
}