0

ナビゲーション バーにサブビューがあります。私はこの方法でそれを追加しようとします:

  UIView *customView =
  [[UIView alloc] initWithFrame:
                  CGRectMake(0, 0, image.size.width + label.frame.size.width, 44)];
  UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
  [customView addSubview:imageView];
  [customView addSubview:label];
  [self.navigationController.navigationBar addSubview:customView];

ただし、ナビゲーション バーをプッシュしようとすると、customView はその場所に留まり、スライド ナビゲーション バーに追従してアニメーション化されません。アニメーション化されたサブビューを実現するにはどうすればよいですか? それは可能ですか?ありがとう!

4

2 に答える 2

0

使用しているように

  [self.navigationController.navigationBar addSubview:customView];

これは、作成したナビゲーション バーが App デリゲートにあり、プロジェクト内のすべての viewController に共通であることを意味します。そのため、ビューを追加すると、すべてのビューにそれが表示されます。サブビューを削除します

-(void)viewWillDisappear:(BOOL)animated{
[Your subview remove fromSuperView]; 
[super viewWillDisappear:YES];
} 

そのサブビューを追加します

-(void)viewWillAppear:(BOOL)animated{
[self.navigationController.navigationBar addSubview:Your subview];

 [super viewWillAppear:YES];

}

これにより、その特定のビューのみにサブビューが追加され、そのビューがポップまたはプッシュされるとすぐに削除されます。指定されたコードは構文に正しくありません。チェックしてください。

于 2012-11-11T17:07:07.903 に答える
0

左、右、またはタイトルビュー
でビューの場所を指定する必要がある方法でサブビューを追加しないでください

self.navigationItem.titleView = YOURVIEW;

または、この方法で左または右のアイテムの別の場所を選択します。タイトルビューが現在のビューに追加されます。削除したい場合は、必要な場所で nil に設定し、サブビューを再度リロードします。

self.navigationItem.titleView = nil;

于 2012-11-11T18:34:02.557 に答える