我怎样才能开发一个像这样的工具栏,有一个按钮,当它被按下时会显示另一个工具栏(滑动到当前工具栏的顶部)?这是来自 Apple 的 iPhoto 应用程序的屏幕截图。
问问题
460 次
1 回答
1
我使用以下方法使其工作(免责声明:这可能会违反 HIG!):
- 我添加了一个新的基本 UIViewController。
- 我在 UIViewController 的视图中添加了一个 UIToolbar。我将此 UIToolbar 连接到我的 UIViewController 中名为“BaseToolbar”的属性。
- 在“BaseToolbar”中,我添加了一个按钮。我将此按钮连接到我的 UIViewController 中名为“AddPressed:”的 IBAction。
- 我在 UIViewController 的 xib 中添加了一个 UIToolbar,但不在UIViewController 的视图中。我只是将它添加到设计表面上。我将此 UIToolbar 连接到我的 UIViewController 中名为“SecondToolbar”的属性。
- 在“SecondToolbar”中,我添加了一个按钮。我将此按钮连接到我的 UIViewController 中名为“TrashPressed:”的 IBAction。
我使用了以下代码:
- (IBAction)AddPressed:(id)sender {
CGRect secondCurrRect = [[self SecondToolbar] frame];
[[self SecondToolbar] setFrame:CGRectMake(0, -1 * secondCurrRect.size.height, secondCurrRect.size.width, secondCurrRect.size.height)];
[[self view] addSubview:[self SecondToolbar]];
[[self view] bringSubviewToFront:[self SecondToolbar]];
[UIView animateWithDuration:1.0
animations:^(void){
[[self SecondToolbar] setFrame:CGRectMake(0, 0, secondCurrRect.size.width, secondCurrRect.size.height)];
}];
}
- (IBAction)TrashPressed:(id)sender {
CGRect secondCurrRect = [[self SecondToolbar] frame];
[UIView animateWithDuration:1.0
animations:^(void){
[[self SecondToolbar] setFrame:CGRectMake(0, -1 * secondCurrRect.size.height, secondCurrRect.size.width, secondCurrRect.size.height)];
}
completion:^(BOOL finished) {
[[self SecondToolbar] removeFromSuperview];
}];
}
使用该代码,新的 UIToolbar在“基本”UIToolbar顶部滑动开/关。
编辑/更新
让我们尝试不同的策略。
(这假设您UIToolbar
在设计时将对象添加到您的 xib)
- 将 Toolbar #1(始终显示在屏幕上的工具栏)添加到视图的顶部,并根据需要放置它。
- 在 Toolbar #1 下方添加 Toolbar #2(上/下滑动的那个),并使用您想要的按钮构建它。
- 将以下代码行放入您的
-(void)viewDidLoad
方法中(这会将第二个工具栏移出屏幕):
[[self Toolbar2] setFrame:
CGRectMake(0, // origin.x
-[[self Toolbar2] frame].size.height, // origin.y
[[self Toolbar2] frame].size.width, // size.width (remains the same)
[[self Toolbar2] frame].size.height) // size.height (remains the same)
];
然后,使用上面的代码,但跳过对addSubview:
and的调用removeFromSuperview
。
现在这有意义吗?
于 2012-04-30T18:01:31.810 回答