代码之家  ›  专栏  ›  技术社区  ›  zpesk

在另一个视图上为视图设置动画

  •  1
  • zpesk  · 技术社区  · 15 年前

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

    我该怎么做?

    1 回复  |  直到 15 年前
        1
  •  5
  •   Jason Coco    15 年前

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

    - (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];
    }
    

    还有很多其他方法可以做到这一点。例如,您可以在需要的地方设置一个视图集,然后将其从屏幕外转换为“隐藏”。当你想要它回来的时候,在动画块内用仿射变换再次变换它,它会向上滑动。这种方法对预先布置好的视图工作得更好,比如使用接口生成器,这样您就不必知道框架的位置,或者它们会在其他代码中发生变化。