我在iOS上的Xamarin.Forms中使用 TabbedPage
进行了最后几天的努力 . 我发现了一些像这样的解决方案:https://forums.xamarin.com/discussion/20901/hide-tab-bar-on-push
但是,它们都不是很好 . 我也尝试子类 TabbedRenderer
并将TabBar高度设置为0.它可以工作,但如果我在 NavigationPage.Pushed
事件处理程序中隐藏TabBar,则会有一些延迟,例如TableView底部有空白 .
如果我试图覆盖 NavigationRenderer
并在 PushViewController
/ PopViewController
方法中隐藏/显示标签栏,它有时会失败 . 例如,如果我来回快速导航,则不会调用方法 PopViewController
,导致NavigationStack损坏,并且不会恢复Tab Bar .
我认为唯一的好办法是使这个属性有效: UIViewController.HidesBottomBarWhenPushed
. 但是,我不知道该怎么做,因为在渲染器中设置/覆盖它不起作用 .
有没有人设法成功展示和隐藏TabBar?
2 回答
我设法实现了一个解决方案,在隐藏
TabBar
后修复了空白区域的问题 . 您可以在this article中阅读有关它的更多详细信息 .要解决这个问题,我们只需要布局所有
ChildViewControllers
. 这是我自定义TabbedPage
及其TabbedPageRenderer
的示例实现 .HideableTabbedPage.cs:
HideableTabbedPageRenderer.cs:
Final result:
我尝试过的:
创建ContentPage的子类并在其中创建BindableProperty(如
HidesBottomBarWhenPushed
) . 我在PageRenderer中设置ViewController.hidesBottomBarWhenPushed
但它不起作用,虽然我可以得到这个属性的值 .在PageRenderer的初始构造函数中设置
this.hidesBottomBarWhenPushed
,仍然没有运气 .我认为
hidesBottomBarWhenPushed
一定有问题,我们不能用这种方式隐藏tabbar . 作为一个临时和简单的解决方法,我在PageRenderer中更改TabBarController.TabBar
的Visible它的行为与上面所说的一样,底部有一些延迟和空白 . 我在push和pop上禁用了动画,问题就消失了 .
测试: