如何用它的父视图转换 UIToolbar
Posted
技术标签:
【中文标题】如何用它的父视图转换 UIToolbar【英文标题】:How to transition UIToolbar with it's parent view 【发布时间】:2011-05-11 16:39:12 【问题描述】:如何从一个 UIViewController(带有底部工具栏)过渡到另一个(不带工具栏),以便在动画进行时,工具栏与第一个视图一起移开,这意味着工具栏保持在其初始位置第一个视图?
我在“事物”应用中看到了这种行为。
为了清楚起见,我不是在寻找诸如在 viewDidAppear 中隐藏/显示工具栏之类的解决方案。
【问题讨论】:
【参考方案1】:所以,这是一个我不太满意的解决方案,但目前它似乎是唯一的一个。
关键是忽略 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 中的工具栏延迟出现...
【讨论】:
我发现这真的很有帮助。进一步的提示:您可以在导航控制器工具栏上的故事板中设置工具栏项目,即使该工具栏是隐藏的。然后你可以说:[customToolbar setItems:self.toolbarItems];
【参考方案2】:
听起来像你想要的:
- ( void )viewWillAppear: (BOOL)animated
NSArray *items = ... UIBarButtonItem array...;
[ super viewWillAppear: animated ];
[ self setToolbarItems: items animated: animated ];
....
【讨论】:
我想我不是很清楚。您的建议与工具栏项目有关,而不是工具栏本身,它将在第二个视图中保留工具栏。我希望工具栏与第一个视图一起滑出。因此工具栏在第一个视图上可见,但在第二个视图上不可见。以上是关于如何用它的父视图转换 UIToolbar的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollview,可以一直往下拉到后面可以看到它的父视图