全画面表示にしたい設定ダイアログがあり、画面の下部にあるタブバーを覆います。このSOの回答を使用してView Controllerに追加HidesBottomBarWhenPushed
すると、タブバーが非表示になります。UITabBarController
残念ながら、サブクラスによって表示される小さな三角形のインジケーター サブビューが残ります。
インジケーターを非表示にするために購読できる何らかの形式の通知があると思いますが、それが何であるかはわかりません。ここで少し助けますか?
全画面表示にしたい設定ダイアログがあり、画面の下部にあるタブバーを覆います。このSOの回答を使用してView Controllerに追加HidesBottomBarWhenPushed
すると、タブバーが非表示になります。UITabBarController
残念ながら、サブクラスによって表示される小さな三角形のインジケーター サブビューが残ります。
インジケーターを非表示にするために購読できる何らかの形式の通知があると思いますが、それが何であるかはわかりません。ここで少し助けますか?
ここで説明されている方法を使用してバーを非表示に設定すると、NSNotification を投稿できますか? ImageView から TabBarController にアクセスできません
将来の参考のために記録する価値があると思うので、私はこれに自分で答えます。私は私SettingsDialogViewController
のViewDidLoad()
方法で私を結びつけていHomeDialogViewController
ます:
NavigationItem.LeftBarButtonItem = new UIBarButtonItem("Settings", UIBarButtonItemStyle.Plain, (e, sender) => {
ActivateController (_settingsDvc());
});
はSettingsDialogViewController
で作成されHidesBottomBarWhenPushed = true
ます。そのため、設定ダイアログがアクティブになると、下部のバーが非表示になり、のViewWillLayoutSubviews()
メソッドCustomTabBarController
が呼び出されます。SettingsDialogViewController
そのメソッドをオーバーライドすることで、表示されているビュー コントローラー (例: ) が押されたときに下部のバーを非表示にするかどうかに基づいて、インジケーターの表示を設定できます。そのView Controllerがポップされると、インジケーターは自動的に再表示されます。
public override void ViewWillLayoutSubviews () {
base.ViewWillLayoutSubviews ();
var selectedVc = SelectedViewController as UINavigationController;
indicator.Hidden = selectedVc != null && selectedVc.VisibleViewController.HidesBottomBarWhenPushed;
}
最後に、新しい設定ビューを有効にしたときに発生したアニメーションにより、画面のステータス バーの下に黒い帯が表示されることがわかりました。AutoResizingMask
「from」View Controllerにを設定することでこれを解決しました。
public override void ViewDidLoad () {
base.ViewDidLoad ();
NavigationItem.LeftBarButtonItem = new UIBarButtonItem("Settings", UIBarButtonItemStyle.Plain, (e, sender) => {
ActivateController (_settingsDvc());
});
View.AutoresizingMask = UIViewAutoresizing.FlexibleHeight;
}