0

状況は次のとおりです。

AutolayoutとUINavigationControllerを使用して、iOS6を搭載したiPad用のアプリを作成しています。私がやろうとしていることは:

標準のプッシュセグエを使用して、あるビューコントローラから次のビューコントローラにセグエします。新しいViewControllerに到着したら、アニメーションでナビゲーションバーを非表示にします。ナビゲーションバーが隠れているので、ビューがまったくシフトしないようにします。実際、最初からナビゲーションバーの下に効果的にビューを描画したいので、コンテンツの移動や移動、黒いバーはありません。参考までに、これは、本を読んだときにAmazonKindleアプリで発生することです。

現在のコードでは、ビューの内容が上にシフトして、UINavigationBarによって残された空白を埋めます。

ビューコントローラのviewWillAppearメソッドで、UIViewControllerのビューとUINavigationControllerのビューのフレームをiPad画面全体に強制的に設定しようとしましたが、サイコロはありません。Autolayoutで制約を使って実験しましたが、それでも行きたい場所にたどり着きませんでした。

あなたが与えることができるどんな助けも素晴らしいでしょう!

4

2 に答える 2

0

新しいビューにカスタムナビゲーションバーを追加し、アニメーション化して非表示にする必要があるようです。

ビューをシフトせずにナビゲーションコントローラーの元のナビゲーションバーを非表示にすることはできないと思います。

むしろ、UINavigationBarをxibファイルに追加し、それをIBOutlet uiNavigationBarにバインドして、次のコードを試してください。

-(void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:NO];
}

- (void) viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    [UIView animateWithDuration:0.3f delay:0.0f options:UIViewAnimationOptionCurveEaseInOut animations:^{
        CGRect f = self.uiNavigationBar.frame;
        f.origin = CGPointMake(f.origin.x, f.origin.y - 44);
        self.uiNavigationBar.frame = f;
    } completion:^(BOOL finished) {
        NSLog(@"done");
    }];
}
于 2013-01-28T17:59:13.873 に答える
0

ナビゲーション バーをアニメーション化する前に、次のことを試してください。

self.navigationController.navigationBar.alpha = 0.99f;

私はこれを試しませんでしたが、これはうまくいくはずです。

于 2013-01-21T09:26:11.747 に答える