如何使用它的父视图转换UIToolbar

时间:2011-05-11 16:39:12

标签: ios uinavigationcontroller transition uitoolbar

如何从一个UIViewController(带有底部工具栏)转换到另一个(没有工具栏),这样当动画正在进行时,工具栏会移动到第一个视图,这意味着工具栏保持在其初始位置第一种观点?

我在“Things”应用中看到了这种行为。

为了清楚起见,我不是在寻找解决方案,例如在viewDidAppear中隐藏/显示工具栏。

2 个答案:

答案 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 ];

    ....
}