我希望在窗口上有一个视图,并且响应一条消息(按钮点击或菜单),我希望在其上方向下滑动另一个视图,并让第一个视图调整大小。
我想离开这个:
**********************************
* *
*--------------------------------*
*| |*
*| view 1 |*
*| |*
*--------------------------------*
* *
**********************************
到此:
**********************************
* *
*--------------------------------*
*| view 2 |*
*--------------------------------*
*--------------------------------*
*| view 1 |*
*--------------------------------*
* *
**********************************
我不一定在寻找代码,不知道从哪里开始。
这适用于桌面应用。
答案 0 :(得分:19)
CoreAnimation绝对是您最好的选择。自从我使用任何CA代码以来已经有一段时间了,但是类似于:
[UIView beginAnimations:@"slideOn" context:nil];
firstView.frame = shrunkFirstViewRect; // The rect defining the first view's smaller frame. This should resize the first view
secondView.frame = secondViewOnScreenFrame; // This should move the second view on the frame.
[UIView commitAnimations];
稍后,您可以使用以下命令返回单个视图:
[UIView beginAnimations:@"slideOff" context:nil];
firstView.frame = normalFirstViewRect; // The rect defining the first view's normal frame. This should expand the first view.
secondView.frame = secondViewOffScreenFrame; // Move the second view off the screen
[UIView commitAnimations];
编辑:以上代码适用于iPhone,我会快速阅读您的问题。
在Mac上,您可能希望使用(类似地):
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:1.0f]; // However long you want the slide to take
[[firstView animator] setFrame:shrunkFirstViewRect];
[[secondView animator] setFrame:secondViewOnScreenFrame];
[NSAnimationContext endGrouping];
答案 1 :(得分:2)
应该注意的是,如果你没有设置动画块的持续时间,默认值约为0.25秒,实际上在大多数情况下看起来效果非常好。
我建议在尝试使用CoreAnimation时首先尝试使用该持续时间。
答案 2 :(得分:1)
我从未尝试过,但我认为CoreAnimation具有有趣的功能。你必须将view1的高度从全高度调整到半高,并将view2的位置从其超视图外部调整到它的上半部分。
答案 3 :(得分:0)
或者,您可以尝试NSSplitView ...