如何动画视图从屏幕底部飞入?

时间:2010-01-19 17:57:05

标签: xamarin.ios

我正在试图弄清楚如何拥有一个视图,让我们称之为ThirdView,当用户点击SecondView上的特定按钮时,从屏幕底部向上滑动。

感谢。

2 个答案:

答案 0 :(得分:4)

您需要在SecondView中创建ThirdView并将其作为模态视图呈现,并在构造函数中传递第二个View。这将是以您希望的方式设置动画的最简单方法。

var thirdView = new ThirdView(secondView);
this.PresentModalViewController(thirdView, true);

在第三个视图中,您需要调用传入的SecondView并调用

secondView.DismissModalViewControllerAnimated(true);

希望这有帮助,

ChrisNTR

答案 1 :(得分:1)

这是一个完整的工作示例。它比上面的那个简单得多......尽管上面的例子是我用来解决所有问题的例子。感谢chrisntr。

这种方法最酷的一点是,对于一个艺术自定义UI(就像我为游戏构建的那个),没有像TabBar,导航栏等现成的UI元素。最有创意的应用程序不使用标准UI内容。

在你的main.cs中,在你的成品块中:

ViewController myUIV = new ViewController();
window.AddSubview(myUIV.View);
window.MakeKeyAndVisble();

然后在新的代码文件中添加以下代码:

using System;
using System.Drawing;
using MonoTouch.UIKit;

namespace AnimationTest
{

public class ViewController : UIViewController
{
    UIButton uib = new UIButton(new RectangleF(100,100,40,40));
    public override void ViewDidLoad()
    {       
        Console.WriteLine("UI1");
        this.View.BackgroundColor = UIColor.Blue;
        uib.BackgroundColor = UIColor.White;
        uib.TouchUpInside += delegate {
            Console.WriteLine("Hey!");
            var vc2 = new SecondController();
            PresentModalViewController(vc2, true);
        };
        this.View.AddSubview(uib);
        base.ViewDidLoad();
    }
}

public class SecondController : UIViewController
{
    UIButton uib = new UIButton(new RectangleF(100,100,40,40));
    public override void ViewDidLoad()
    {
        this.View.BackgroundColor = UIColor.White;
        uib.BackgroundColor = UIColor.Red;
        uib.TouchUpInside += delegate {
            this.DismissModalViewControllerAnimated(true);
        };

        this.View.AddSubview(uib);
        base.ViewDidLoad();
    }
}