1

appdelegate にカスタム ナビゲーションバーを設定しました。ここでコードを見ることができます。

UIImage *image = [UIImage imageNamed:@"navbar.png"];
[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

しかし、今はイベントキット フレームワークを使用しています。私が欲しいのは、イベントの詳細に行くときに、標準のナビゲーションバーのレイアウトを取得することです。したがって、画像はありません。

EKEventViewController *vc = [[EKEventViewController alloc] init];
[vc.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
vc.event = [dataSource eventAtIndexPath:indexPath];
vc.allowsEditing = YES;
[calendar.navigationController pushViewController:vc animated:YES];

以下を試してみましたが、うまくいきません。何か助けはありますか?

4

1 に答える 1

1

できることは 1 つです。デフォルトのナビゲーション バーを使用して 1 つの viewController のスクリーンショットを撮り、ナビゲーション バー領域のみをトリミングします。つまり、320 x 44 サイズの画像を作成します。

デフォルトのナビゲーションバーが再び必要な場合は、このトリミングされた画像をナビゲーションバーの背景として使用し、次のコードを追加します

UIImage *image = [UIImage imageNamed:@"defaultNavbar.png"];
[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

カスタムNavimageを持つ別のviewControllerに移動すると、カスタム画像コードを使用してnav画像を再度描画します。

UIImage *image = [UIImage imageNamed:@"navbar.png"];
[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
于 2013-02-11T17:25:06.767 に答える