1

「ユニークな」デザインのiPhoneプロジェクト(私はまったく満足していません)の場合、UINavigationControllerのコントローラーのナビゲーションバーと部分的に重なるカスタムビューを描画する必要があります。ターゲットは、デバイスの向きが固定された iphone/ios 6 (ポートレート) です。

私の現在の解決策は、コントローラーを介してプログラムでナビゲーションバーを無効にしself.navigationController.navigationBar.hidden = YES;viewDidLoad「偽の」ナビゲーションバーを描画してこれをペイントすることです。これにより、ステータス バーの色が黒のままになるという問題が発生します (実際のナビゲーション バーが表示されないため)。iOS 6 のステータス バーの色については、こちらで説明しています: iOS 6 のステータス バーの色?

既に使用しようとしまし[self.view insertSubview:OVERLAPVIEW aboveSubView:self.navigationController.navigationBar]たが、動作せず、ナビゲーション バーの下に OVERLAPVIEW が描画されました。

ナビゲーション バーを別のビュー (z 方向) と重ねる別の方法はありますか? または、ナビゲーション バーが表示されていないときにステータス バーの色を変更する方法はありますか (残念ながら、これに加えて、オーバーラップのあるビューはアプリのメイン ビューであり、ユーザーに表示される最初の画面です)

完全な開示: 私は ios の初心者であり、スタック オーバーフローの潜伏者です。これはスタック オーバーフローに関する最初の質問です。必要に応じて、質問を明確にし、スタック オーバーフローのスキルを向上させるのを手伝ってください。

4

3 に答える 3

5

使用する

[self.navigationController.view addSubview:OVERLAPVIEW];

それ以外の

[self.view insertSubview:OVERLAPVIEW aboveSubView:self.navigationController.navigationBar];

ナビゲーションバーを部分的に表示するように、ビューのフレームを調整できます。

于 2013-01-02T04:14:34.857 に答える
1

ナビゲーションバーを非表示にすることでこの問題を解決しました

self.navigationController.navigationBar.hidden = YES;

私のビューにナビゲーションバーを追加することによって。この新しいナビゲーション バーの後に追加されたものはすべて、それと重なります (index [parentView.subviews objectAtIndex:0]; も使用できます)。ステータスバーの色は必要に応じて変わります。

スプラッシュ スクリーンの場合、まったく同じことを行い、ナビゲーション バーをフルスクリーンのスプラッシュ イメージに重ねます。

-(void)viewDidLoad{
    [super viewDidLoad];
    UINavigationBar * navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 49)];
    UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"SPLASH"];
    [navigationBar pushNavigationItem:item animated:NO];
    [self.view addSubview:navigationBar];

    CGRect frame = [[UIScreen mainScreen] bounds];
    frame.origin.y -= 20;
    UIImageView *splashImage = [[UIImageView alloc] initWithFrame:frame];
    splashImage.image = [UIImage imageNamed:@"splash"];
   [self.view addSubview:splashImage];
}
于 2013-03-10T16:00:38.163 に答える
0

この答えは私の問題を解決するようです StatusBarを含む他のすべてのビューの上にUIViewを追加します

注:現時点では、この道を進んでいません。試してみたら、この回答を受け入れます(現時点ではこの問題の解決を延期しており、しばらく時間がかかる場合があります)

于 2013-01-04T09:57:47.020 に答える