7

非常に単純な質問がありますが、答えはそれほど簡単ではありません。

向きが変わったときに UITabBar を非表示にしたい。

私は2つの方法を見ました:

フレームウェイ

myAppDelegate.tabBarController.tabBar.frame = CGRectMake(<<bottomOfScreen>>);

正常に動作しますが、空白の領域があるため、tabBarController.view.frame と myViewController.view.frame で再生しようとしましたが、良い結果が得られませんでした。

ナビゲーションコントローラーの方法

myOtherVC.hideTabBarWhenPushed = YES;
[self.navigationController pushViewController:myOtherVC animated:NO];

機能しますが、アプリの良い解決策ではありません

アップデート:

[appDelegate.tabBarController.view removeFromSuperview];
[self.view removeFromSuperview]; [appDelegate.window addSubview:self.view];
self.view.frame = CGRectMake(0,0,480,320);

正常に動作しますが、もう自動回転しません (もちろん、shouldAutorotate を変更していないため、常に YES が返されます)


タブバーを非表示にして、現在のビューをそのスペースで表示するにはどうすればよいですか?


ありがとう

4

2 に答える 2

3

現在のソリューションを以下と組み合わせて使用​​できます。

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];

回転を検出します。(これをview.transform=CGAffineTransformMakeRotationと組み合わせて回転させていると思いますが…?)

于 2009-07-20T19:24:56.617 に答える
0

これを簡単に実行できると思う2つの方法は次のとおりです。

  1. オブジェクトをtabBarコントローラーに再ロードします-非表示にするviewControllerのhidesBottomBarWhenPushedをYESに設定します。
  2. もう1つのオプションは、電話を回転させたときにビューをウィンドウの唯一のビューにし、電話を回転させたときにtabBarController.viewをウィンドウに戻すことです。

お役に立てれば

于 2009-06-24T09:36:41.150 に答える