如何从一个UIViewController(带有底部工具栏)转换到另一个(没有工具栏),这样当动画正在进行时,工具栏会移动到第一个视图,这意味着工具栏保持在其初始位置第一种观点?
我在“Things”应用中看到了这种行为。
为了清楚起见,我不是在寻找解决方案,例如在viewDidAppear中隐藏/显示工具栏。
答案 0 :(得分:2)
所以,这是一个我不太高兴的解决方案,但目前它似乎是唯一一个。
重点是忽略UINavigationController的内置工具栏属性,创建单独的UIToolbar并将其放在视图控制器中。
// Create your bar items
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
NSArray *toolbarItems = [[NSArray alloc] initWithObjects: flexibleSpace, nil];
[flexibleSpace release], flexibleSpace = nil;
UIToolbar *customToolbar = [[UIToolbar alloc] init];
[customToolbar sizeToFit];
[customToolbar setFrame:CGRectMake(0.0, self.view.frame.size.height - self.navigationController.navigationBar.frame.size.height - customToolbar.frame.size.height, customToolbar.frame.size.width, customToolbar.frame.size.height)];
[customToolbar setItems:toolbarItems];
[[self view] addSubview:customToolbar];
[customToolbar release], customToolbar = nil;
[toolbarItems release], toolbarItems = nil;
这样工具栏会随着它的视图滑动,当放在viewDidAppear中时,不会出现动画问题,例如“白色矩形”或后期出现的工具栏......
答案 1 :(得分:0)
这听起来像你想要的:
- ( void )viewWillAppear: (BOOL)animated
{
NSArray *items = ... UIBarButtonItem array...;
[ super viewWillAppear: animated ];
[ self setToolbarItems: items animated: animated ];
....
}