我的导航栏中有一个子视图。我试着这样添加它:
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停留在原地,没有跟随滑动导航栏进行动画。如何实现动画化的子视图?这有可能吗?谢谢!
发布于 2012-11-12 02:34:03
您不应该以这种方式添加子视图
您必须在left、right或title view中指定视图位置
self.navigationItem.titleView =您的视图;
或者选择另一个位置左侧或右侧的项目,这样标题视图将添加到当前视图,如果您想要删除它,只需在您想要的位置将其设置为零,然后再次重新加载它的子视图。
self.navigationItem.titleView = nil;
发布于 2012-11-12 01:07:08
因为您正在使用
[self.navigationController.navigationBar addSubview:customView];
这意味着你创建的导航栏是在应用程序委托中的,并且对你项目中的所有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];
}
这将仅在该特定视图中添加子视图,并在该视图弹出或给定的pushed.The代码语法不正确时立即删除它,请对此进行检查。
https://stackoverflow.com/questions/13331758
复制相似问题