【发布时间】:2009-08-06 15:44:52
【问题描述】:
我想在我的 iphone 应用程序中的另一个视图之上为视图设置动画。我基本上希望我的视图看起来像苹果键盘,除了我的自定义控件。当我单击一个按钮时,我希望新视图从屏幕底部、部分视图的顶部开始动画。
我该怎么做?
【问题讨论】:
标签: iphone objective-c cocoa-touch iphone-sdk-3.0
我想在我的 iphone 应用程序中的另一个视图之上为视图设置动画。我基本上希望我的视图看起来像苹果键盘,除了我的自定义控件。当我单击一个按钮时,我希望新视图从屏幕底部、部分视图的顶部开始动画。
我该怎么做?
【问题讨论】:
标签: iphone objective-c cocoa-touch iphone-sdk-3.0
只需将视图添加到超级视图的可见框架(您在其上制作动画的视图)之外的某个位置,然后使用动画块更改它的位置。它会向上滑动。
- (void)addView
{
// Obviously this won't compile with cut&paste... you have
// to supply the actual views.
UIView* myControlView = // assume this exists somewhere
UIView* myMainView = // assume this exists too
myControlView.frame = CGRectMake(0, 480, 320, 100); // use real numbers
[myMainView addSubview:myControlView];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
myControlView.frame = CGRectMake(0, 380, 320, 100);
[UIView commitAnimations];
}
还有许多其他方法可以做到这一点。例如,您可以将视图设置在您想要的位置,然后将其翻译到屏幕外以“隐藏”它。当您希望它回来时,在动画块内使用仿射变换再次对其进行变换,它会向上滑动。这种方式对预先布局的视图效果更好一些,例如使用 Interface Builder 等您不一定知道框架的位置是什么,或者它们可能会在其他代码中发生变化。
【讨论】: