在另一个视图顶部制作视图动画

zpe*_*esk 1 iphone cocoa-touch objective-c iphone-sdk-3.0

我想在我的iPhone应用程序中为另一个视图顶部的视图设置动画.我基本上希望我的视图看起来像苹果键盘,除了我的自定义控件.当我单击一个按钮时,我希望新视图从屏幕底部动态显示在视图的一部分上方.

我该怎么做?

Jas*_*oco 5

只需将视图添加到超级视图的可见帧之外的某个位置(您在其上设置动画的视图),然后使用动画块更改其位置.它会向上滑动.

- (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];
}
Run Code Online (Sandbox Code Playgroud)

还有许多其他方法可以做到这一点.例如,您可以将视图设置在您想要的位置,然后将其从屏幕上翻译为"隐藏"它.当你想要它回来时,在动画块内部使用仿射变换再次变换它,它将向后滑动.这种方式对于预先布局的视图效果稍好一些,比如使用Interface Builder等,你不一定知道框架的位置是什么,或者它们在其他代码中会发生变化.