如何在导航栏中设置子视图动画?

时间:2012-11-11 13:56:18

标签: ios uinavigationcontroller

我的导航栏中有子视图。我试着通过这种方式添加它:

  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会保留在该位置,而不是按照滑动导航栏设置动画。如何实现动画子视图?它甚至可能吗?谢谢!

2 个答案:

答案 0 :(得分:0)

正在使用

  [self.navigationController.navigationBar addSubview:customView];

这意味着您创建的导航栏位于App委托中,并且对于项目中的所有viewControllers都是通用的,这就是为什么一旦您向其添加视图,您就会在每个视图上看到它。删除

中的子视图
-(void)viewWillDisappear:(BOOL)animated{
[Your subview remove fromSuperView]; 
[super viewWillDisappear:YES];
} 

并在

中添加该子视图
-(void)viewWillAppear:(BOOL)animated{
[self.navigationController.navigationBar addSubview:Your subview];

 [super viewWillAppear:YES];

}

这将仅在该特定视图中添加子视图,并在弹出或推送该视图后立即将其删除。给出的代码与语法不正确请检查一下。

答案 1 :(得分:0)

你不应该以这种方式添加子视图 您已在左侧,右侧或标题视图

中指定了您的观看位置
  

self.navigationItem.titleView = YOURVIEW;

或以这种方式选择其他位置左侧或右侧项目,如果您想删除标题视图,只需将其添加到当前视图中,只需将其设置为nil,然后重新加载子视图,

  

self.navigationItem.titleView = nil;