21

iOS 7 のカレンダーのような NavigationBar が必要です。

NavigationBar の背後にぼかしがないことに気付きました。

カレンダーアプリ iOS7

1 つの詳細ビューから戻るとき。NavigationBar「通常」であるのは「メイン」だけです。

カレンダーアプリ iOS7

誰でもこれを行う方法を知っていますか?

私はこれをやろうとしました:

[self.navigationController.navigationBar setFrame:CGRectMake(0, 0, 320, 88)];

ただし、これにより、タイトルとボタンが 44 ピクセル下に移動します。

の下に別のナビゲーション バーを追加する別のアイデアがありますnavigationController.navigationBarが、最初のナビゲーション バーの下に線があります。これを削除する方法を知っている人はいますか?

ありがとう!

4

1 に答える 1

5

それを私が直した!

「メイン」NavigationBar の下に別の NavigationBar を配置しました。「メイン」の NavigationBars シャドウ ラインを削除しました。

NavigationBar の半透明を削除し、背景色を 97% の白に設定します。(それは標準です)。半透明が YES の場合、コンテンツが背後にあると奇妙に見えます。

[self.navigationController.navigationBar setTranslucent:NO];
[self.navigationController.navigationBar setBarTintColor:[UIColor colorWithWhite:0.97 alpha:1]];
[NavigationBarExtension setTranslucent:NO];
[NavigationBarExtension setBarTintColor:[UIColor colorWithWhite:0.97 alpha:1]];

行を削除するコード (これは viewWillAppear で行います。他のビュー コントローラーをプッシュすると、行が戻ってくる必要があるためです)

- (void)viewWillAppear:(BOOL)animated {
    for (UIView *view in self.navigationController.navigationBar.subviews) {
        if ([view isKindOfClass:NSClassFromString(@"_UINavigationBarBackground")]) {
            for (UIView *view2 in view.subviews) {
                if ([view2 isKindOfClass:[UIImageView class]] && view2.frame.size.height < 1) {
                    [view2 setHidden:YES];
                    break;
                }
            }
        }
    }
}

他のView Controllerをプッシュしたときに行を表示するコード:

- (void)viewWillAppear:(BOOL)animated {
    for (UIView *view in self.navigationController.navigationBar.subviews) {
        if ([view isKindOfClass:NSClassFromString(@"_UINavigationBarBackground")]) {
            for (UIView *view2 in view.subviews) {
                if ([view2 isKindOfClass:[UIImageView class]] && view2.frame.size.height < 1) {
                    [view2 setHidden:NO];
                    break;
                }
            }
        }
    }
}
于 2013-09-20T21:41:22.367 に答える