使用NavigationController.PushViewController的BeginAnimations和CommitAnimations

时间:2010-03-28 12:49:45

标签: uiview xamarin.ios commitanimations beginanimations

当我在导航中按下控制器时,我正在尝试进行基本的翻转动画过渡。下面的代码翻转视图,但视图首先出现(每个元素淡入),然后发生翻转。是否可以使用UINavigationController进行翻转动画?

任何指针都会很棒,我发现Monotouch的示例是在另一个视图中的视图上执行动画。

void ToolbarButtonClick()
{
    InformationController controller = new InformationController();
    NavigationController.PushViewController(controller,true);
}

public class InformationController : UIViewController
{
    public override void ViewDidLoad ()
    {
        UIView.BeginAnimations("Flip");
        UIView.SetAnimationDuration(1.0);
        UIView.SetAnimationTransition(UIViewAnimationTransition.FlipFromRight,View,true);

        base.ViewDidLoad ();
        Title = "Information";
    }

    public override void ViewWillAppear (bool animated)
    {
        base.ViewWillAppear (animated);
    }

    public override void ViewDidAppear (bool animated)
    {
        base.ViewDidAppear (animated);
        UIView.CommitAnimations();
    }
}

2 个答案:

答案 0 :(得分:4)

我在那里,但是需要从NavigationController

中获取视图
// Push the controller first or the Title doesn't animate
NavigationController.PushViewController(controller,false);

UIView.BeginAnimations(null,IntPtr.Zero);
UIView.SetAnimationDuration(1);
UIView.SetAnimationTransition(UIViewAnimationTransition.FlipFromLeft,
                              NavigationController.View,true);
UIView.CommitAnimations();

答案 1 :(得分:0)

我不是专家,但我想知道PushView控制器上的TRUE表示它将被设置为动画。它让我想知道是否这使得NavigationController做了初始的动画工作量,然后是你的。当你将它设置为false时,会发生什么?我知道我们倾向于自动将TRUE放在那里而不考虑。