20

私のプロジェクトに適用できる、これに対する許容可能な解決策をグーグルで検索できませんでした。

私のアプリは、3 つのタブを持つグラフ ツールです。1 つはグラフ自体用で、他の 2 つはグラフに追加できるものの参照/検索機能用です。すべてのタブはナビゲーション コントローラーです。

グラフ自体のタブは、ポートレート モードの場合、グラフの小さなプレビューを表示し、下のグラフにある各エンティティの詳細を一覧表示し、下部にタブ バーを表示します。

ユーザーが横向きモードに回転すると、グラフが全画面表示になり、タブ バーを含む他のすべてが消えます。グラフの GLView は、タブ バーがあった白い四角形によって常に隠されているため、ここで問題が発生しています。

ナビゲーション コントローラー ビューのサイズを全画面表示に変更し、タブ バー コントローラーのビューのサイズを全画面表示に変更し、タブ バー自体のフレーム サイズを CGRect(0,0,0,0) に変更してみました。感情的に取り乱したり、拳を机にぶつけたり、MacBookに向かって暴言を吐いたりします。すべて役に立たない。

どうすればそれを機能させることができますか?

4

18 に答える 18

34

この問題があり、コンテンツ ビューのタブバーのサブビュー フレームを変更することで解決しました (タブ バーにはコンテンツ ビュー (#0) とバー ビュー (#1) の 2 つのサブビューがあります)。

[[self.tabBarController.view.subviews objectAtIndex:0] setFrame:FULLSCREEN_FRAME];
于 2011-06-14T15:30:36.217 に答える
6

私は同じ問題を抱えていて、ここで答えを見つけました: UIViewは、ナビゲーションバーとタブバーを非表示にするときにフルスクリーンにサイズ変更されません

タブバーを非表示にするときに、このタブバーコントローラービューのサイズを変更するだけです:

tabBarController.view.frame = CGRectMake(0, 0, 320, 480);
于 2010-11-26T13:44:08.680 に答える
3

これは私のために働きます:

[[self.tabBarController.view.subviews objectAtIndex:0] setFrame:CGRectMake(0, 0, 320, 480)];

タブのviewControllers内にこのコードがありました。

于 2012-02-17T21:20:34.027 に答える
3

ボトムバーをタブバーとして非表示にすることに問題があるようです....私が直面していたもので、これについて多くのことをグーグルで検索しました.このタブバーのバグと考えています.それから....騙す.....

タブバーを非表示にしようとしていて空白が残っている場合は、これを試すことができ、間違いなく役立ちます..

コーディングの地獄のために、あなたはただ書く必要があります

[self setHidesBottomBarWhenPushed:YES];

タブバーが必要ない他のビューにプッシュするときは、それを書くだけです

twitDetObj=[[TwitDetail alloc] initWithNibName:@"TwitDetail" bundle:nil];
[self.navigationController pushViewController:twitDetObj animated:YES];
self.hidesBottomBarWhenPushed=YES;
[twitDetObj release];

これがうまくいくことを願っています.....

于 2010-11-22T06:19:11.597 に答える
1

今も悩んでいる方へ。問題は制約にあることがわかりました。タブ バーは非表示になっていますが、既にストーリーボードから制約が変更されています。

スイフト 3+

self.tabBarController?.tabBar.isHidden = true

let cons = NSLayoutConstraint(item: textview, attribute: NSLayoutAttribute.bottom,
         relatedBy: NSLayoutRelation.equal, toItem: self.view, 
         attribute: NSLayoutAttribute.bottom, multiplier: 1.0, constant: 0)

view.addConstraints([cons])

私の場合、「textview」はアイテムであり、非表示のTabBarから空白を埋めるはずでした。

于 2020-05-01T21:50:43.287 に答える
0

タブバーを非表示に設定する前に、self.navigationController.view.frameをフルサイズ、つまりUIApplication画面フレームに設定する必要があると思います。

于 2010-10-26T11:15:47.860 に答える
0

プッシュされたビューで

- (BOOL)hidesBottomBarWhenPushed
{
    return YES;
}
于 2014-06-30T09:17:03.603 に答える
0

タブバーがあったスペースが他のビューに割り当てられていないため、タブバーを非表示に設定すると、対応するビューをスケールフィルやアスペクトフィルのように画面全体に拡大または塗りつぶすように設定したり、iphine よりも大きなビューを取得したりできます。画面を横向きに変更すると、画面全体を完全に埋めることができます

于 2010-10-21T10:47:09.840 に答える
0

私の解決策:self.edgesForExtendedLayout = .NoneView ControllerのviewDidLoad().

于 2016-03-11T11:21:39.777 に答える
0

A)再描画されていない、またはB)GLViewのフレームがそのスペースを占有していないだけでなく、それが隠されていると確信していますか?

于 2010-03-11T15:40:15.670 に答える
0

これは単なる回避策ですが、ユーザーが横向きに回転したときにグラフをモーダルに表示しようとしましたか? これにより、タブ バーが見えなくなります。

で移行を回避できます

[viewController presentModalViewController:graph animated:NO]

于 2010-10-07T15:54:49.460 に答える
0

下のUIViewを確認してください。白に設定されている可能性があるため、タブを非表示にすると、白い UIView が表示されます。UIView を透明に設定してみてください。

于 2010-10-23T05:10:35.447 に答える
0
- (void)hidesTabBar:(BOOL)hidden {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0];

    for (UIView *view in self.tabBarController.view.subviews) {
        if ([view isKindOfClass:[UITabBar class]]) {
            if (hidden) {
                [view setFrame:CGRectMake(view.frame.origin.x, [UIScreen mainScreen].bounds.size.height, view.frame.size.width , view.frame.size.height)];
            } else {
                [view setFrame:CGRectMake(view.frame.origin.x, [UIScreen mainScreen].bounds.size.height - 49, view.frame.size.width, view.frame.size.height)];
            }
        } else {
            if([view isKindOfClass:NSClassFromString(@"UITransitionView")]) {
                if (hidden) {
                    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, [UIScreen mainScreen].bounds.size.height)];
                } else {
                    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, [UIScreen mainScreen].bounds.size.height - 49 )];
                }
            }
        }
    }

    [UIView commitAnimations];
}
于 2016-02-06T14:56:02.720 に答える
0

tababr を再表示して特定のビューに到達した後。タブバーは上に空白を表示していましたuitababr。これは私の問題を解決しました

-(void)viewWillAppear:(BOOL)animated
{ 
    [[self.tabBarController.view.subviews objectAtIndex:0] setFrame:CGRectMake(0, 0, 320, 568)];

}
于 2014-05-08T16:59:45.507 に答える
0

タブバー ビュー コントローラの currentViewController.view のスーパービューの一部では、clipToBounds が YES に設定されています (クラス名が間違っていなければ、UITransitionView です)。アクセスするには、次を使用します

tabBarController.currentViewController.view.superview.superview.clipToBounds = NO;

これを行った後、ビューのサイズ変更の試みは何にも制限されず、成功します。幸運を!

于 2010-09-30T08:27:13.240 に答える
-1

ビューの自動サイズ変更矢印を既にチェックしていると思いますか?

于 2010-10-15T14:48:00.867 に答える
-4

UITabBar を非表示にしてみましたか

tab_bar.hidden = YES
于 2010-03-11T15:38:26.750 に答える