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 回答